首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在搜索Amazon时被阻塞(即使使用标头、代理、延迟)

在搜索Amazon时被阻塞(即使使用标头、代理、延迟)
EN

Stack Overflow用户
提问于 2016-12-28 16:32:28
回答 3查看 13.9K关注 0票数 9

我有一个Python代码来抓取Amazon产品清单。我已经设置了代理和标题。在每次爬行之前,我也有sleep()。然而,我仍然无法得到数据。我得到的信息是:

要讨论自动访问Amazon数据的问题,请联系api-services-support@amazon.com。

我的代码的部分内容是:

代码语言:javascript
复制
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上其他可用的问题的重复,因为其他人建议使用代理、头和延迟(睡眠),我已经完成了所有这些。即使做了他们建议的事,我也不能刮。

代码最初是工作的,但在刮了几页之后就停止了工作。

EN

回答 3

Stack Overflow用户

发布于 2017-01-08 19:00:19

而不是:

代码语言:javascript
复制
r = requests.get(url, headers, proxies=proxies)

做:

代码语言:javascript
复制
r = requests.get(url, headers=headers, proxies=proxies)

这为我解决了这个问题。希望决议能继续有效。

票数 4
EN

Stack Overflow用户

发布于 2016-12-28 17:02:12

根据您的描述,Amazon可能会做一些额外的事情(例如,使用cookie)来检查您是否在使用浏览器。但这并不是说你无法克服它:我要看到浏览器的请求和脚本的请求之间的区别,就是检查浏览器,并将一个请求作为curl复制到amazon。然后使用这个工具将curl命令转换为python请求代码。在这里,您有一个与浏览器上的请求完全相同的请求。这样做几次,以了解amazon是否/如何在每个请求上修改cookie,然后尝试使用脚本来模仿这种行为。

如果您确信请求看起来完全相同,则可能需要增加两个连续请求之间的等待时间。我希望这能帮到你。

票数 3
EN

Stack Overflow用户

发布于 2016-12-28 16:42:15

尝试在请求中使用会话。它将记住cookies和headers。如果失败,我将尝试使用selenium 2与铬驱动程序或幻影驱动程序,如果您喜欢无头。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41366099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档