Python urlopen对Amazon站点不返回任何内容

Python urlopen对Amazon站点不返回任何内容,python,html-parsing,amazon,Python,Html Parsing,Amazon,我刚刚开始编写Python,遇到了一个似乎是Amazon.com独有的urllib问题。如果我这样做: pageIn = urllib.request.urlopen("http://www.google.com") print(pageIn.read()) 它从Google打印XML。如果我做了同样的事情,但是对来自Amazon的任何站点(主页、特定产品页面、任何内容),它都会打印一个空字符串 亚马逊是我找到这个的唯一网站,我不明白为什么。有什么想法吗 编辑-已解决: 亚马逊屏蔽了我的代码,

我刚刚开始编写Python,遇到了一个似乎是Amazon.com独有的urllib问题。如果我这样做:

pageIn = urllib.request.urlopen("http://www.google.com")
print(pageIn.read())
它从Google打印XML。如果我做了同样的事情,但是对来自Amazon的任何站点(主页、特定产品页面、任何内容),它都会打印一个空字符串

亚马逊是我找到这个的唯一网站,我不明白为什么。有什么想法吗

编辑-已解决: 亚马逊屏蔽了我的代码,因为它无法识别源代码;默认情况下,它是您的Python版本号。通过在FancyURLopener中更改版本,我能够让亚马逊允许我进入。下面的代码现在可以工作了

from urllib.request import FancyURLopener
class MyOpener(FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'

myopener = MyOpener()
page = myopener.open('http://www.amazon.com/')
print(page.read())`

这可能是一个用户代理问题。我不知道urllib的默认设置是什么,但有些站点不会发送类似于机器人的响应。查看python文档,了解如何将用户代理设置为类似浏览器的内容。请提供一个请求特定亚马逊页面的示例。另外,一个指向数据包转储的链接(例如由生成的)也不错。或者/另外,执行
strace-o stracefile-s 100-f python download amazon.py
(其中download-amazon.py是您的演示脚本)并提供一个指向生成文件
stracefile
的链接。感谢Richard H,通过您的评论,我能够解决我的问题!@Dave愿意分享您的解决方案吗?通过覆盖FancyUrOpener并设置用户代理,我能够让Amazon认为请求来自Mozilla。Richard说是b时说得对锁定。代码如下:
class MyOpener(FancyURLopener):版本='Mozilla/5.0(Windows;U;Windows NT 5.1;it;rv:1.8.1.11)Gecko/20071127 Firefox/2.0.0.11'