【发布时间】:2017-05-12 23:25:13
【问题描述】:
我有一个 Python 代码来抓取亚马逊产品列表。我已经设置了代理和标题。每次爬行之前我也有sleep()。但是,我仍然无法获取数据。我得到的消息是:
要讨论对亚马逊数据的自动访问,请联系 api-services-support@amazon.com
我的部分代码是:
url = "https://www.amazon.com/Baby-Girls-Shoes/b/ref=sv_sl_fl_7239798011?ie=UTF8&node=7239798011"
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
proxies_list = ["128.199.109.241:8080","113.53.230.195:3128","125.141.200.53:80","125.141.200.14:80","128.199.200.112:138","149.56.123.99:3128","128.199.200.112:80","125.141.200.39:80","134.213.29.202:4444"]
proxies = {'https': random.choice(proxies_list)}
time.sleep(0.5 * random.random())
r = requests.get(url, headers, proxies=proxies)
page_html = r.content
print page_html
这个问题与 Stackoverflow 上的其他问题不重复,因为其他人建议使用代理、标头和延迟(睡眠),而我已经完成了所有这些。即使按照他们的建议,我也无法刮擦。
代码最初可以运行,但在抓取几页后停止运行。
【问题讨论】:
-
如果他们阻止了你,那么他们不希望你废弃他们的网站。看起来他们的 API 只给你评论见:stackoverflow.com/questions/4811259/… 总的来说,这可能违反了他们的 TOS,这不是一件好事。
-
您确定在请求之间等待的时间足够长吗?如果它开始工作然后停止,这似乎是最有可能的解释。
-
您是否真的尝试联系他们讨论您可能有哪些选择?
-
我遇到了同样的问题——我在这里使用了标题:scrapehero.com/… 在
scrape()方法中,它最终工作了。
标签: python python-2.7 web-scraping