日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python beautifulsoup模拟点击_Python爬虫丨BeautifulSoup实践

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python beautifulsoup模拟点击_Python爬虫丨BeautifulSoup实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目分析

爬取的網站是下廚房,目標是固定欄目【本周最受歡迎】

可以看到我們要爬取的/explore/不在禁止爬取的列表內

1.先看下頁面

計劃拿到的信息是:菜名、所需材料、和菜名所對應的詳情頁URL

2.打開檢查工具,在Elements里查看這個網頁。

3.點擊開發者工具左上角的小箭頭,然后選中一個菜名,那么Elements會自動標記出對應的代碼。

4.找到詳情頁URL的所在位置。其值是/recipe/104486698/

我們可以提取標簽,然后用text拿到它的文本,在使用[href]獲取到半截URL和http://www.xiachufang.com做拼接即可。

5.找食材位置,點擊小箭頭,挑選食材。

6.根據菜名的路徑、URL的路徑、食材的路徑,尋找這三者的最小共同父級標簽

兩種寫爬蟲的思路:

思路一:先去爬取所有的最小級父級標簽

,然后針對每一個父級標簽,提取里面的菜名、URL、食材

思路二:分別提取所有的菜名、所有的URL、所有的食材。然后一一對應起來。

代碼實現(一)

獲取與解析

用requests.get()獲取數據,使用BeautifulSoup來解析

import requests

# 引用requests庫

from bs4 import BeautifulSoup

# 引用BeautifulSoup庫

res_foods = requests.get('http://www.xiachufang.com/explore/')

# 獲取數據

bs_foods = BeautifulSoup(res_foods.text,'html.parser')

# 解析數據

print(bs_foods)

# 打印解析結果

提取最小父級標簽

看下它的標簽

,有一個class屬性,其值是info pure-u。

使用find_all()語法查找最小父級標簽

import requests

# 引用requests庫

from bs4 import BeautifulSoup

# 引用BeautifulSoup庫

res_foods = requests.get('http://www.xiachufang.com/explore/')

# 獲取數據

bs_foods = BeautifulSoup(res_foods.text,'html.parser')

# 解析數據

list_foods = bs_foods.find_all('div',class_='info pure-u')

# 查找最小父級標簽

print(list_foods)

# 打印最小父級標簽

一組菜名、URL、食材

首先查找父級標簽中的第一個標簽,里面有我們想要的信息,用find()方法來查找,所用的參數就是標簽本身。

提示一:提取的是第0個父級標簽,而不是整個父級標簽列表。

提示二:提取出的菜名可能前后都會有很多空格和換行,可以使用切片把多余的內容裁剪掉。

import requests

# 引用requests庫

from bs4 import BeautifulSoup

# 引用BeautifulSoup庫

res_foods = requests.get('http://www.xiachufang.com/explore/')

# 獲取數據

bs_foods = BeautifulSoup(res_foods.text,'html.parser')

# 解析數據

list_foods = bs_foods.find_all('div',class_='info pure-u')

# 查找最小父級標簽

tag_a = list_foods[0].find('a')

# 提取第0個父級標簽中的標簽

name = tag_a.text[17:-13]

# 菜名,使用[17:-13]切掉了多余的信息

URL = 'http://www.xiachufang.com' + tag_a['href']

# 獲取URL

tag_p = list_foods[0].find('p',class_='ing ellipsis')

# 提取第0個父級標簽中的

標簽

ingredients = tag_p.text[1:-1]

# 食材,使用[1:-1]切掉了多余的信息

print(ingredients)

# 打印食材

寫循環,存列表

要求:寫一個循環,提取當前網頁的所有菜名、URL、食材,并將它存入列表。

import requests

# 引用requests庫

from bs4 import BeautifulSoup

# 引用BeautifulSoup庫

res_foods = requests.get('http://www.xiachufang.com/explore/')

# 獲取數據

bs_foods = BeautifulSoup(res_foods.text,'html.parser')

# 解析數據

list_foods = bs_foods.find_all('div',class_='info pure-u')

# 查找最小父級標簽

list_all = []

# 創建一個空列表,用于存儲信息

for food in list_foods:

tag_a = food.find('a')

# 提取第0個父級標簽中的標簽

name = tag_a.text[17:-13]

# 菜名,使用[17:-13]切掉了多余的信息

URL = 'http://www.xiachufang.com'+tag_a['href']

# 獲取URL

tag_p = food.find('p',class_='ing ellipsis')

# 提取第0個父級標簽中的

標簽

ingredients = tag_p.text[1:-1]

# 食材,使用[1:-1]切掉了多余的信息

list_all.append([name,URL,ingredients])

# 將菜名、URL、食材,封裝為列表,添加進list_all

print(list_all)

# 打印

代碼實現(二)

import requests

# 引用requests庫

from bs4 import BeautifulSoup

# 引用BeautifulSoup庫

res_foods = requests.get('http://www.xiachufang.com/explore/')

# 獲取數據

bs_foods = BeautifulSoup(res_foods.text,'html.parser')

# 解析數據

tag_name = bs_foods.find_all('p',class_='name')

# 查找包含菜名和URL的

標簽

tag_ingredients = bs_foods.find_all('p',class_='ing ellipsis')

# 查找包含食材的

標簽

list_all = []

# 創建一個空列表,用于存儲信息

for x in range(len(tag_name)):

# 啟動一個循環,次數等于菜名的數量

list_food = [tag_name[x].text[18:-14],tag_name[x].find('a')['href'],tag_ingredients[x].text[1:-1]]

# 提取信息,封裝為列表。注意此處[18:-14]切片和之前不同,是因為此處使用的是

標簽,而之前是

list_all.append(list_food)

# 將信息添加進list_all

print(list_all)

# 打印

總結

以上是生活随笔為你收集整理的python beautifulsoup模拟点击_Python爬虫丨BeautifulSoup实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。