urllib2 请求 returns 一个不同的页面大约五分之一
urllib2 request returns a different page about 1 in 5 times
import urllib2
req = urllib2.Request('http://www.amazon.com/Sweet-Virgin-Organic-Coconut-13-5oz/dp/B00Q5CIL4Y', headers={ 'User-Agent': 'Mozilla/5.0' })
html = urllib2.urlopen(req).read()
print len(html)
这是我能做的最小的例子。如果你 运行 那么大约 5 倍响应长度中的 1 次将是 5769,而其他时间将是正常可用的响应。
这是怎么回事?
编辑:
看来这一定是你这边的问题 - 我已经 运行 了 ~50 次,我每次都得到 ~490000 左右。
您的速率受到限制。
检查数据长度,当你检测到一个短数据包时,你需要等待一段时间,直到你没有速率限制。 (你必须弄清楚什么速度是可持续的)
鉴于简短回复的内容,这变得更容易回答。亚马逊怀疑您正在对其网站进行自动抓取,并为您提供了一个验证码,如果您是使用浏览器的人,则可以解决。
我有点惊讶它只满足了五分之一的请求,而不是总是或从不。
正如亚马逊在回复中所说,请考虑改用他们的 API。
import urllib2
req = urllib2.Request('http://www.amazon.com/Sweet-Virgin-Organic-Coconut-13-5oz/dp/B00Q5CIL4Y', headers={ 'User-Agent': 'Mozilla/5.0' })
html = urllib2.urlopen(req).read()
print len(html)
这是我能做的最小的例子。如果你 运行 那么大约 5 倍响应长度中的 1 次将是 5769,而其他时间将是正常可用的响应。
这是怎么回事?
编辑:
看来这一定是你这边的问题 - 我已经 运行 了 ~50 次,我每次都得到 ~490000 左右。
您的速率受到限制。
检查数据长度,当你检测到一个短数据包时,你需要等待一段时间,直到你没有速率限制。 (你必须弄清楚什么速度是可持续的)
鉴于简短回复的内容,这变得更容易回答。亚马逊怀疑您正在对其网站进行自动抓取,并为您提供了一个验证码,如果您是使用浏览器的人,则可以解决。
我有点惊讶它只满足了五分之一的请求,而不是总是或从不。
正如亚马逊在回复中所说,请考虑改用他们的 API。