搜索亚马逊畅销书

使用 Python 搜索亚马逊畅销书的终极指南

手动跟踪价格和项目可能很困难。这就需要用到网络搜索。我可以使用 Python 自动完成这一过程,而不是把所有东西都写下来。通过抓取畅销书页面,我可以收集 CSV 等格式的数据,从而方便分析和跟踪趋势。让我们深入了解如何使用 Python 搜索亚马逊的畅销书。

什么是亚马逊畅销书?

亚马逊畅销书排名 (BSR) 是一个根据销售量对产品进行排名的系统。该排名可帮助客户找到不同类别中最畅销的产品,并查看他们正在考虑的产品的销售情况。BSR 显示在每个产品页面上,并定期更新以反映当前趋势。

搜索 "最佳卖家 "页面与搜索其他亚马逊产品页面类似。不过,亚马逊采取了安全措施,使得快速访问这些数据具有挑战性。如果您发送了太多请求,亚马逊就会屏蔽您的 IP 地址。为了避免这种情况,您必须在 Python 代码中添加安全措施。应对这一挑战是在亚马逊上成功进行网络刮擦的关键。

最佳亚马逊搜索工具

在我们跳转到逐步手动刮擦指南之前,我强烈建议您查看 我的 5 大亚马逊爬虫.我与所提及的任何品牌都没有任何关系,我是根据我和我的团队的个人经验来评论这些品牌的。

赶时间?以下是一份简明扼要的清单:

  • Bright Data先进的亚马逊搜索功能,具有反检测和全局代理功能。
  • Oxylabs具有本地化功能的专业电子商务搜索。
  • Smartproxy支持旋转 IP 的 API 和代理解决方案。
  • Zyte带有可定制选择器和应用程序接口的电子商务搜索器。
  • ScraperAPI支持多种语言,提供灵活、基于信用的计划。

为抓取设置 Python 环境

我们需要设置必要的 Python 库,以便开始搜索亚马逊畅销书。我们将使用 Selenium 实现浏览器自动化,使用 webdriver-manager 管理网络驱动程序,并使用 pandas 将刮擦数据存储到 CSV 文件中。

步骤 1:安装 Python

首先,确保您的计算机上安装了 Python。您可以从官方 Python 网站.

接下来,打开终端或命令提示符,安装必要的依赖项:

pip install selenium webdriver-manager pandas

第 2 步:查看亚马逊畅销页面

在开始搜索之前,我们需要了解亚马逊畅销书页面的结构。在浏览器中打开任何亚马逊畅销商品页面,使用 "检查 "工具(右键单击任何元素并选择 "检查")查看 HTML。

在本教程中,我们将废止 "厨房与餐饮 "畅销书页面。该页面的结构包括

  • 产品名称:产品标题位于一个特定的 HTML 元素中,该元素具有唯一标识的类。
  • 产品价格:价格位于另一个特定的 HTML 元素中。
  • 产品网址:每个产品都有一个链接到其详细产品页面的 URL。

这些元素将作为我们搜索工作的基础。

第 3 步:为网络抓取设置 Selenium

为了对亚马逊进行抓取,我们将使用 Selenium 与 "最佳畅销书 "页面进行交互,并提取必要的信息。

首先,导入所需的库:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd
import time

接下来,创建一个函数来初始化 Chrome 浏览器驱动程序。该函数将设置无头 Chrome 浏览器(在后台运行而不显示图形用户界面的浏览器):

def init_chrome_driver():
chrome_options = Options()
chrome_options.add_argument(" - 无头")
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
return driver

步骤 4:编写抓取逻辑

我们需要一个函数来加载 "最畅销产品 "页面并获取产品数据(标题、价格和 URL)。下面的函数将实现这一功能:

def get_products_from_page(URL, 驱动程序):
driver.get(url)
time.sleep(3) # Wait for the page to load
# Find all products on the page
product_elements = driver.find_elements(By.CLASS_NAME、 "zg-item")
# List to store product data
products = []
# Loop through the products and extract data
for product in product_elements:
try:
title = product.find_element(By.CLASS_NAME、 "p13n-sc-truncate").text
url = product.find_element(By.CLASS_NAME, "a-link-normal).get_attribute("href")
price = product.find_element(By.CLASS_NAME、 "p13n-sc-price").text
products.append({"title": 标题, "url": url、 "price": price})
except Exception as e:
print(f"提取产品数据时出错: {e}")
continue
return products

该函数将畅销商品页面的 URL 和 Selenium 驱动程序作为输入。然后,它会提取页面上每个产品的标题、价格和 URL,并将其存储在一个列表中。

步骤 5:将数据导出为 CSV

获得数据后,我们可以使用 Pandas 将其保存为 CSV 文件:

def save_too_csv(产品,文件名):
df = pd.DataFrame(products)
df.to_csv(filename, index=False)

此函数将产品数据列表转换为 Pandas DataFrame,并将其保存为 CSV 文件。

第 6 步:将所有内容整合在一起

现在,我们可以将所有内容整合到一个主函数中,启动网络搜索过程:

def main():
url = "https://www.amazon.com/Best-Sellers-Kitchen-Dining/zgbs/kitchen/"
driver = init_chrome_driver()
try:
products = get_products_from_page(url, driver)
save_to_csv(products, "amazon_best_sellers.csv")
finally:
driver.quit()
if __name__ == "__main__": main()

步骤 7:运行脚本

要运行脚本,只需在终端中执行 Python 文件即可:

python main.py

运行脚本后,将在工作目录中生成一个名为 amazon_best_sellers.csv 的文件,其中包含刮取的产品数据。

第 8 步:应对搜索挑战

虽然上述脚本可以正常工作,但对亚马逊进行搜索并非没有挑战。亚马逊采用了反搜索技术,例如

  1. 速率限制: 如果亚马逊在短时间内检测到过多请求,就会阻止您的 IP 地址。为避免这种情况,请使用 time.sleep() 在请求之间设置延迟。
  2. 验证码: 亚马逊使用 CAPTCHAs(验证码)来防止僵尸程序搜索其网站。Selenium 无法解决验证码问题,因此您可能需要 2Captcha 这样的服务来绕过验证码。
  3. IP 屏蔽: 为防止您的 IP 被封,可考虑使用 ScraperAPI 等代理服务或轮换 IP 地址。

第 9 步:搜索更多类别

该脚本可以轻松修改,以便从其他类别中抓取畅销书页面。只需将 main() 函数中的 URL 替换为您希望抓取的类别 URL 即可。

例如,要抓取 "图书 "畅销书页面,请将 URL 更改为

url = "https://www.amazon.com/Best-Sellers-Books/zgbs/books/"

步骤 10:使用亚马逊抓取 API(替代方法)

如果您在使用传统网络刮擦时遇到太多难题,您可以使用亚马逊刮擦 API。这些 API 为从亚马逊收集数据提供了更简单、更可靠的方法。

例如,亚马逊畅销产品抓取 API 允许您抓取畅销榜数据,而无需担心 IP 封禁或验证码。以下是一个如何使用它的示例:

import requests
def scrape_amazon_api():
payload = {
"source": "amazon_bestsellers",
"domain": "com",
"query": "284507",
"render": "html",
"start_page": 1,
"parse": True,
}
response = requests.post("https://realtime.oxylabs.io/v1/queries", json=payload, auth=("USERNAME", "PASSWORD"))
data = response.json()
# Process the data and save it to CSV
products = data["results"][0]["content"]["results"]
df = pd.DataFrame(products)
df.to_csv("amazon_products_api.csv"。, index=False)
scrape_amazon_api()

结论

使用 Python 抓取亚马逊畅销书页面为研究、分析和竞争情报收集产品数据提供了一种宝贵的方法。虽然使用 Selenium 的传统网页抓取方法很有效,但它们也面临着诸如速率限制和验证码等挑战。要克服这些障碍,您可以采用旋转代理等高级技术,或使用专为大规模数据收集而设计的专门的刮擦 API。

类似文章