gpt4 book ai didi

python - 爬取维基百科时出错

转载 作者:行者123 更新时间:2023-11-28 17:45:03 24 4
gpt4 key购买 nike

根据@Jens Timmerman 在这篇文章中的回答:Extract the first paragraph from a Wikipedia article (Python)

我这样做了:

import urllib2
def getPage(url):
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')] #wikipedia needs this

resource = opener.open("http://en.wikipedia.org/wiki/" + url)
data = resource.read()
resource.close()
return data

print getPage('Steve_Jobs')

从技术上讲,它应该可以正常运行,并给我页面的来源。但这是我得到的:

enter image description here

任何帮助将不胜感激..

最佳答案

在使用 wgetcurl 检查后,我发现这不是 Python 特有的问题——它们也有“奇怪”的字符;快速检查 file 告诉我响应只是 gzip 压缩的,所以维基百科似乎默认只发送 gzip 压缩数据,而不检查客户端是否真的在请求中说支持它。

幸运的是,Python 能够解压缩 gzip 数据:将您的代码与 this answer 集成你得到:

import urllib2
from StringIO import StringIO
import gzip

def getPage(url):
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'MyTestScript/1.0 (contact at myscript@mysite.com)'), ('Accept-encoding', 'gzip')]
resource = opener.open("http://en.wikipedia.org/wiki/" + url)
if resource.info().get('Content-Encoding') == 'gzip':
buf = StringIO( resource.read())
f = gzip.GzipFile(fileobj=buf)
return f.read()
else:
return resource.read()

print getPage('Steve_Jobs')

这在我的机器上工作得很好。

不过,正如评论中已经指出的那样,如果您想以编程方式使用维基百科的 API 访问维基百科内容,您应该避免“粗暴爬行”。

关于python - 爬取维基百科时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com