【发布时间】:2021-09-13 11:02:27
【问题描述】:
我尝试了很多方法,但他们都无法解决他们向我显示错误:
所有数组的长度必须相同
from bs4 import BeautifulSoup
import requests
import pandas as pd
review = []
ratings = []
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Encoding": "gzip, deflate",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"DNT": "1",
"Connection": "close",
"Upgrade-Insecure-Requests": "1",
}
for page in range(1, 5):
r = requests.get(
"https://www.amazon.com/s?k=redmi&page=2&qid=1631528810&ref=sr_pg_={page}".format(
page=page
),
headers=headers,
)
soup = BeautifulSoup(r.content, "lxml")
for d in soup.findAll("div", attrs={"class": "s-result-item"}):
rating = d.find("span", attrs={"class": "a-icon-alt"})
if rating is not None:
ratings.append(rating.text)
reviews = d.find("span", class_="a-size-base")
if reviews is not None:
review.append(reviews.text)
df = pd.DataFrame({"rating": ratings, "reviews": review})
df.to_csv("products .csv", index=False, encoding="utf-8")
【问题讨论】:
-
我想你的
ratings和reviews的长度不一样。您需要修复抓取代码以考虑到这一点。
标签: python web-scraping beautifulsoup python-requests