python - 当我使用python打开URL(维基百科)时,如何得到“ERR_ACCESS_DENIED”?

标签 python python-2.7 web-scraping urllib2

这是我有史以来第一个发布的问题,所以我可能会为新手寻找一点遗憾。

我在高中的计算机科学课上正在学习Python,因此我几乎没有使用Python解决问题的经验。现在,我正在研究通过遵循每个页面上的链接从Wikipedia中的随机页面到目标页面(也在Wiki中)的内容。这是我第一次使用urllib之类的东西,所以到目前为止,我只使用了老师告诉我的内容。

我有一些代码应该可以在Wiki中打开页面,但是我一直想出一个页面,上面写着关于技术错误的内容。不过,从浏览器打开Wikipedia也可以。

我不知道要使它正常工作需要什么,而且我也不知道该在哪里寻找解决方案。

我的代码(在使用Python 2.7的Ubuntu 11.04中使用IDLE):

import urllib
import HTMLParser

class Parser(HTMLParser.HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start:", tag, attrs)

    def handle_endtag(self, tag):
        print("End:", tag)
    def handle_data(self, data):
        print ("Data:", data)

#proxy = {"http": "http://10.102.0.3:3128"}
browser = urllib.FancyURLopener()#(proxies = proxy)
    #The commented-out stuff is for the proxy at school.
    #Both at home and at school, I come up with errors.
f = browser.open("http://en.wikipedia.org/wiki/Special:Random")
p = Parser()
print p.feed(f.read())


我的输出如下所示:

(“数据:”,“ \ n”)
('开始:','html',[('xmlns','http://www.w3.org/1999/xhtml'),('xml:lang','en'),('lang', 'en')])
(“数据:”,“ \ n”)
(“开始:”,“头”,[])
(“数据:”,“ \ n”)
(“开始:”,“标题”,[])
(“数据:”,“维基媒体错误”)
(“结尾:”,“标题”)
(“数据:”,“ \ n”)
('开始:','元',[('http-equiv','Content-Type'),('content','text / html; charset = UTF-8')])
(“结尾:”,“元”)
(“数据:”,“ \ n”)
(“开始:”,“元”,[(“名称”,“作者”),(“内容”,“马克·赖安”)))
(“结尾:”,“元”)
(“数据:”,“ \ n”)
(“开始:”,“元”,[(“名称”,“版权”),(“内容”,“(c)2005-2007 Mark Ryan等。”文本受GNU自由文档许可授权。http://www.gnu.org/licenses/fdl.txt ')])
(“结尾:”,“元”)
(“数据:”,“ \ n \ n”)
(“开始:”,“样式”,[(“类型”,“文本/ css”)])
(“数据:”,“ \ n”)
(“结尾:”,“样式”)
(“数据:”,“ \ n”)
(“开始:”,“脚本”,[])
('Data:','// \ n \ t函数行{\ n \ t \ tvar c = s.split(\'\'); \ n \ t \ tfor(var i = 0; i < c.length; i ++){\ n \ t \ t \ tdocument.write(\'')
(“结束:”,“ div”)
('数据:',“'); \ n \ t \ t} \ n \ t} \ n //]]>”)
(“结尾:”,“脚本”)
(“数据:”,“ \ n”)
(“结尾:”,“头”)
(“数据:”,“ \ n \ n”)
('开始:','正文',[('链接','#24442E'),('文本','#000000'),('vlink','#24442E'),('alink',' #FF0000')])
(“数据:”,“ \ n”)
(“开始:”,“ h1”,[])
(“数据:”,“维基媒体基金会”)
(“结尾:”,“ h1”)
(“数据:”,“ \ n”)
(“开始:”,“脚本”,[])
(“数据:”,“行('ccd4cf bdc3bf adb1af 9ea09f dbe5df');”)
(“结尾:”,“脚本”)
(“数据:”,“ \ n \ n”)
(“开始:”,“ h2”,[])
(“数据:”,“错误”)
(“结尾:”,“ h2”)
(“数据:”,“ \ n \ n”)
(“开始:”,“脚本”,[])
(“数据:”,“行('8f8f8f acacac c6c6c6 dbdbdb eaeaea f4f4f4');”)
(“结尾:”,“脚本”)
(“数据:”,“ \ n \ n”)
(“数据:”,“ \ n”)
(“开始:”,“ div”,[(“类”,“ ContentArea”)])
(“数据:”,“ \ n \ n”)
('开始:','div',[('id','en'),('lang','en')])
(“数据:”,“ \ n”)
(“开始:”,“ p”,[])
(“数据:”,“我们的服务器当前遇到技术问题。这可能是暂时的,应尽快修复。请”)
('开始:','a',[('href','http://en.wikipedia.org/wiki/Special:Random'),('onclick','window.location.reload(false);返回false')])
(“数据:”,“重试”)
(“结尾:”,“ a”)
(“数据:”,“几分钟后”。)
(“结尾:”,“ p”)
(“数据:”,“ \ n”)
(“开始:”,“ p”,[])
(“数据:”,“您可能可以在”中获取更多信息)
(“开始:”,“ a”,[('href','irc://chat.freenode.net/wikipedia']])
(“数据:”,“#wikipedia”)
(“结尾:”,“ a”)
(“数据:”,“渠道”)
('开始:','a',[('href','http://www.freenode.net')])
(“数据:”,“ Freenode IRC网络”)
(“结尾:”,“ a”)
(“数据:”,“。”)
(“结尾:”,“ p”)
(“数据:”,“ \ n”)
(“开始:”,“ p”,[])
(“数据:”,“ Wikimedia基金会是一个非营利性组织,它托管Internet上一些最受欢迎的网站,包括Wikipedia。它一直需要购买新的硬件。如果您想提供帮助,请' )
(“开始:”,“ a”,[('href','http://wikimediafoundation.org/wiki/Fundraising')])
(“数据:”,“捐赠”)
(“结尾:”,“ a”)
(“数据:”,“。”)
(“结尾:”,“ p”)
(“数据:”,“ \ n”)
('开始:','hr',[('noshade','noshade'),('size','1px'),('width','80%')])
(“结尾:”,“小时”)
(“数据:”,“ \ n”)
(“开始:”,“ div”,[(“ class”,“ TechnicalStuff”)])
(“数据:”,“ \ n如果您向Wikimedia系统管理员报告此错误,请在下面提供详细信息。”)
(“开始:”,“ br”,[])
('End:','br')
(“数据:”,“ \ n”)
(“结束:”,“ div”)
(“数据:”,“ \ n”)
(“开始:”,“ div”,[(“ class”,“ TechnicalStuff”)])
(“数据:”,“ \ n”)
('开始:','bdo',[('dir','ltr')])
('Data:','\ nRequest:GET http://en.wikipedia.org/wiki/Special:Random,从112.205.80.8通过sq72.wikimedia.org(squid / 2.7.STABLE9)到()')
(“开始:”,“ br”,[])
('End:','br')
(“数据:”,“ \ n错误:ERR_ACCESS_DENIED,错误[无错误]在2012年2月6日星期一11:58:50 GMT \ n')
(“结束:”,“ bdo”)
(“数据:”,“ \ n”)
(“结束:”,“ div”)
(“数据:”,“ \ n”)
(“结束:”,“ div”)
(“数据:”,“ \ n \ n”)
(“结束:”,“ div”)
(“数据:”,“ \ n”)
(“开始:”,“脚本”,[])
(“数据:”,“行('9ea09f adb1af bdc3bf ccd4cf');”)
(“结尾:”,“脚本”)
(“数据:”,“ \ n \ n”)
(“结尾:”,“身体”)
(“数据:”,“ \ n”)
(“结尾:”,“ html”)
(“数据:”,“ \ n \ n”)
没有

最佳答案

尝试使用urllib2并添加这样的标题。至少您不会收到403))

 opener = urllib2.build_opener()
 opener.addheaders = [('User-agent', 'Mozilla/5.0')]
 f = opener.open("http://en.wikipedia.org/wiki/Special:Random")


代替

f = browser.open("http://en.wikipedia.org/wiki/Special:Random")


并且不要忘了导入库。祝好运!

关于python - 当我使用python打开URL(维基百科)时,如何得到“ERR_ACCESS_DENIED”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9159999/

相关文章:

python - RichIPythonWidget 导入对 pkgutil 模块的副作用

Python Tkinter : multiple images and text on a BIG button?

python - 如何使用 Sklearn.preprocessing 对包含列表的 pandas.DataFrame 列进行编码

python - 使用 sqlalchemy 查询使用多列 where in 子句

python - python 中的数据类型(寻找类似于 R 中的 str 的东西)

javascript - 无法使用 Python 抓取网页

node.js - 使用 Heroku 作为代理好吗?

python - 无法单击页面 Selenium python 上的元素

python - 使用循环 Python 绘制重复值

python - 在 python 中的 __str__ 方法上调用 super()?