【发布时间】:2013-05-11 13:08:09
【问题描述】:
我正在尝试使用 python 2.7.3 和 urllib2 获取多个页面的 html 内容。 对于大多数页面,它工作正常,但像 http://www.bbc.co.uk/news/entertainment-arts-22441507#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa 这样的一些页面返回给我这个内容:
最好在启用了样式表 (CSS) 的最新网络浏览器中查看此页面。虽然您将能够在当前浏览器中查看此页面的内容,但您将无法获得完整的视觉体验。如果可以的话,请考虑升级您的浏览器软件或启用样式表 (CSS)。
需要 javascript 的页面也会出现此问题。我只得到返回的 noscript-tag 中的内容。
这是我获取内容的方式:
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
response = urllib2.urlopen(url).read().decode("utf-8")
是否需要额外的标题?
【问题讨论】:
-
在我看来像是用户代理检测。您可以尝试添加一个模仿浏览器的伪造 User-agent 标头,例如
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:20.0) Gecko/20100101 Firefox/20.0. -
有什么理由不使用更友好的
requests库? -
我用requests-library 和@Xion 的标题进行了尝试。仍然没有成功,也许我做错了什么
标签: javascript python urllib2