我一直在使用亚马逊的产品广告API来生成包含给定书籍价格的网址。我生成的一个网址如下:
http://www.amazon.com/gp/offer-
listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327
当我单击链接或将链接粘贴到地址栏上时,网页加载正常。但是,当我执行以下代码时,我得到一个错误:
url = "http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327"
html_contents = urllib2.urlopen(url)
错误是 urllib2.HTTPError:HTTP错误503:服务不可用 。首先,由于网页成功加载,我什至不明白为什么会出现此错误。
另外,我注意到的另一个奇怪的行为是以下代码有时会给出某些错误,而有时却不会给出所述错误:
html_contents = urllib2.urlopen("http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327")
我完全不知道这种行为是如何发生的。有没有解决办法或解决办法?我的目标是阅读url的html内容。
编辑
我不知道为什么堆栈溢出会更改我的代码,以将我在代码中上面列出的Amazon链接更改为rads.stackoverflow。无论如何,请忽略rads.stackoverflow链接,并使用上述引号之间的链接。
这是因为Amazon不允许自动访问其数据,所以他们拒绝了您的请求,因为它不是来自正确的浏览器。如果您查看503响应的内容,则会显示:
要讨论对Amazon数据的自动访问,请联系api-services-
support@amazon.com。有关迁移到我们的API信息,请参阅我们的市场API在https://developer.amazonservices.com/ref=rm_5_sv,或我们的产品广告API在
https://affiliate-program.amazon.com/gp/advertising/api
/detail/main.html/ref=rm_5_ac 用于广告用例。
这是因为User-Agent
for Pythonurllib
显然不是浏览器。您总是可以伪造User- Agent
,但这并不是很好的做法(或道德上的作法)。
顺便提一句,如另一个答案所述,该requests
库对于Python中的HTTP访问确实非常有用。
问题内容: 我刚刚开始使用Python中的goslate库检测文本中单词的语言,但是在测试了7-8个输入后,我给出了输入,该单词用阿拉伯语和英语两种语言编写。之后,它开始给我错误。 我写的代码为: 现在它对于我之前测试过的任何输入都根本不起作用,并且给了我同样的错误。我尝试在Google上找到错误解决方法,但没有任何帮助。 我尝试使用上面链接中建议的命令对其进行更新: 但它没有帮助,因为它已经是我
问题内容: 我是Jetty的新手,我尝试在此处运行示例程序“ http://www.codeproject.com/Articles/128145/Run- Jetty-Web-Server-Within-Your- Application ”,但我收到了错误消息我的页面“ http:// localhost:8585 / runJetty / ” 我从Eclipse获取的错误日志: 我的xml文
当我在我的服务器上用wget、curl或python爬行谷歌搜索引擎时,我遇到了一个非常奇怪的问题。Google将我重定向到以[ipv4 | ipv6]开头的地址。谷歌。fr/抱歉/索引重定向。。。最后发送503错误,服务不可用。。。 有时抓取工作正常,有时不是在白天,我尝试了几乎所有可能的方法:强制ipv4/ipv6而不是主机名、引用者、用户代理、vpn、. com/. fr/、代理和tor,.
> 计数操作失败,出现以下错误消息: OriginalException:ElasticSearch.Net.ElasticSearchClientException:远程服务器返回错误:(503)服务器不可用。调用:状态代码503来自:GET/myindex/_count。ServerError:Type:search_phase_execution_exception原因:“All shard
问题内容: 因此,在进行开发时,我可以设置为,如果发生错误,我可以看到格式正确,并具有良好的堆栈跟踪和请求信息。 但是在某种生产站点上,我更愿意使用并向访问者展示一些标准错误500页,其中包含我目前正在修复此bug的信息;) 同时,我想以某种方式记录所有错误这些信息(堆栈跟踪和请求信息)存储到服务器上的文件中-因此我可以将其输出到控制台并观看错误滚动,每小时将日志发送给我或类似的东西。 你会为dj