Pandas
Pandas 是一个 Python 库,它提供灵活的数据结构,使我们与数据的交互变得非常容易。我们将使用它将数据保存在 CSV 文件中。
obj={
}
arr=[]
obj[“name”] = soup.find(“span”,{
“class”:”a-size-large product-title-word-break”}).text.lstrip()
obj[“price”] = soup.find(“span”,{
“class”:”priceToPay”}).find(“span”,{
“class”:”a-offscreen”}).text
obj[“rating”] = soup.find(“i”,{
“class”:”a-icon-star”}).text.split(“ “)[0]
arr.append(obj)
首先,我们声明了一个对象和一个数组。然后我们将所有目标数据存储在该对象中。然后我们将这个对象放入一个数组中。现在,我们将使用 pandas 和该数组创建一个数据框,然后使用该数据框创建 CSV 文件。
df = pd.DataFrame(arr)
df.to_csv(‘amazon_data.csv’, index=False, encoding=’utf-8')
这将在您的文件夹中创建一个名为 amazon_data.csv 的 CSV 文件。
Pandas 让我们的工作变得容易多了。使用这种技术,您可以抓取任何规模的亚马逊页面。
import requests
from bs4 import BeautifulSoup
import pandas as pd
obj={
}
arr=[]
url = “https://www.amazon.com/dp/B08WVVBWCN"
headers = {
“User-Agent”:”Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}
resp = requests.get(url, headers=headers)
print(resp.status_code)
soup=BeautifulSoup(resp.text,’html.parser’)
obj[“name”] = soup.find(“span”,{
“class”:”a-size-large product-title-word-break”}).text.lstrip()
obj[“price”] = soup.find(“span”,{
“class”:”priceToPay”}).find(“span”,{
“class”:”a-offscreen”}).text
obj[“rating”] = soup.find(“i”,{
“class”:”a-icon-star”}).text.split(“ “)[0]
arr.append(obj)
df = pd.DataFrame(arr)
df.to_csv(‘amazon_data.csv’, index=False, encoding=’utf-8')
print(arr)
总结
正如你所观察到的,Requests、BeautifulSoup(BS4)和pandas库极大地简化了我们从亚马逊网站提取数据的过程。显而易见,如果你打算利用requests库来批量抓取亚马逊的数百万页面,那么你需要处理好多事项,包括设置合适的请求头、进行代理服务器的轮换以及处理验证码问题。
然而,如果你选择使用其他框架(Scrapy)提供的网页抓取API服务,那么你就无需亲自处理这些繁琐的步骤。其他框架(Scrapy)会利用其庞大的代理和请求头资源库来高效地完成对亚马逊网站的抓取任务。
值得一提的是,数据抓取工具的应用范围并不局限于亚马逊,它能够抓取任何网站的数据,哪怕是那些需要JavaScript渲染的复杂网站。