我正在尝试编写一个工具来查找给定亚马逊产品的平均评论分数和评分数量。
不幸的是,亚马逊似乎故意将这两件事从他们的 API 中排除,这一直是许多论坛主题的主题。
从技术上讲,您可以抓取产品页面的 HTML 并获取它,但亚马逊很快就会注意到您正在运行脚本并开始提供验证码,从而进一步加深了他们不希望您收集它的想法。
但是在这种情况下,第三方服务如何收集和提供这些数据呢?他们是否违反了亚马逊的服务条款并通过不正当手段收集数据,或者是否有某种我没有看到的合法方法?
Jungle Scout 和 ASINspector 等服务可能使用先进的网络抓取策略从 Amazon 收集数据,从而绕过 Amazon API 的限制。他们可能会利用无头浏览器、代理轮换和复杂的抓取算法的组合来避免检测。这是一个微妙的领域,需要平衡效率和微妙性。
对于抓取亚马逊评论分数和评级数量的工具,您需要一个可以模仿人类浏览模式同时处理潜在验证码或阻止的设置。这涉及随机延迟、轮换用户代理以及可能使用不同的 IP 地址。
这是对抓取代码的更专业的看法:
import requests, random
from bs4 import BeautifulSoup
from time import sleep
# Advanced scraping function
def scrape_amazon(url):
user_agents = ['list of user agents']
headers = {'User-Agent': random.choice(user_agents)}
sleep(random.uniform(1, 3)) # Randomized sleep to mimic human
response = requests.get(url, headers=headers)
# Parse with BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')
# Extract data here
return data
# Scrape a product page
data = scrape_amazon('https://www.amazon.com/dp/product-id')
该脚本使用用户代理列表并随机化延迟,这是模仿人类浏览行为的关键。
对于更简化的方法,特别是在处理大规模抓取时,像 Crawlbase 这样的工具可以改变游戏规则。它可以处理大规模网络抓取的复杂性,例如轮换 IP 和管理不同的浏览器签名,这从头开始实施可能相当麻烦。请记住使您的抓取活动符合亚马逊的服务条款。