gpt4 book ai didi

python - Python 中的网页抓取

转载 作者:行者123 更新时间:2023-12-04 07:27:48 25 4
gpt4 key购买 nike

我试图为某个大学项目抓取一个网站。网址是https://www.bonprix.it/prodotto/leggings-a-pinocchietto-pacco-da-2-leggings-a-pinocchietto-pacco-da-2-bianco-nero-956015/?itemOptionId=12211813 .
我的python代码有问题。我想获得的是从 1 到 5 页面的所有评论,但我得到了所有 []。任何帮助将不胜感激!
这是代码:

import csv
from bs4 import BeautifulSoup
import urllib.request
import re
import pandas as pd
import requests
reviewlist = []
class AppURLopener(urllib.request.FancyURLopener):
version = "Mozilla/5.0"

opener = AppURLopener()
response = opener.open('https://www.bonprix.it/prodotto/leggings-a-pinocchietto-pacco-da-2-leggings-a-pinocchietto-pacco-da-2-bianco-nero-956015/?itemOptionId=12211813')

soup = BeautifulSoup(response,'html.parser')

reviews = soup.find_all('div',{'class':'reviewContent'})


for i in reviews:
review = {

'per_review_name' : i.find('span',{'itemprop':'name'}).text.strip(),
'per_review' : i.find('p',{'class':'reviewText'}).text.strip(),
'per_review_taglia' : i.find('p',{'class':'singleReviewSizeDescr'}).text.strip(),

}
reviewlist.append(review)

for page in range (1,5):
prova = soup.find_all('div',{'data-page': '{page}'})
print(prova)
print(len(reviewlist))

df = pd.DataFrame(reviewlist)
df.to_csv('list.csv',index=False)
print('Fine.')
这里是我得到的输出:
[]
5
[]
5
[]
5
[]
5
Fine.

最佳答案

该网站仅在第一个请求中加载评论的第一页。如果您检查它的请求,您可以看到它在您更改评论页面时请求其他数据。您可以按如下方式重写代码以获取所有页面的评论:

reviews_dom = []
for page in range(1,6):
url = f"https://www.bonprix.it/reviews/list/?styleId=31436999&sortby=date&page={page}&rating=0&variant=0&size=0&bodyHeight=0&showOldReviews=true&xxl=false&variantFilters="
r = requests.request("GET", url)
soup = BeautifulSoup(r.text, "html.parser")
reviews_dom += soup.find_all("div", attrs={"class": "reviewContent"})

reviews = []
for review_item in reviews_dom:
review = {
'per_review_name' : review_item.find('span', attrs={'itemprop':'name'}).text.strip(),
'per_review' : review_item.find('p', attrs={'class':'reviewText'}).text.strip(),
'per_review_taglia' : review_item.find('p', attrs={'class':'singleReviewSizeDescr'}).text.strip(),
}
reviews.append(review)

print(len(reviews))
print(reviews)
代码中会发生什么?
在第一次迭代中,我们请求每页评论的数据(上例中的前 5 页)。
在第二次迭代中,我们解析评论 dom 并提取我们需要的数据。

关于python - Python 中的网页抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68132361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com