【问题标题】:Python urllib2 returns noscript-contentPython urllib2 返回 noscript-content
【发布时间】: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


【解决方案1】:

在 javascript/ajax 尝试之前,您似乎正在获取原始 HTML 页面。尝试使用webkit 来获取应用了 JavaScript 的页面。请参阅 here 以获取带有链接的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2015-11-07
    相关资源
    最近更新 更多