【问题标题】:Python Requests Data Error?Python 请求数据错误?
【发布时间】:2015-02-25 02:07:31
【问题描述】:

我正在使用 requests 和 BeatifulSoup 从网页中检索和提取信息。

但是,当我调用 requests.get(url) 然后打印出文本结果时,它与我在网页上“检查元素”时看到的不同。缺少多个 HTML 代码部分,一些标签在 span 中有“正在加载”等。

我怀疑这意味着 requests.get() 函数在页面完全加载之前从页面中提取数据。

有没有办法防止这种情况发生?

谢谢。

【问题讨论】:

  • 您只是拉取该页面的 HTML。可能性是 HTML 加载了操纵 DOM 的 javascript。将您的检查与“查看源代码”或 curl 输出进行比较。
  • @Jack 是的,我刚刚意识到输出与页面源相同。有没有办法获取javascript生成的数据?
  • 当然。使用类似PhantomJS
  • ` requests.get() ` 不会加载由 JS 操作的数据...您将不得不使用 Selinium 在浏览器加载时加载页面

标签: python url beautifulsoup


【解决方案1】:

如 cmets 中所述,您通过检查在浏览器中看到的是可能已使用 javascript 呈现的 HTML。

您的代码:

requests.get(url)

是来自服务器的原始响应。 javascript 尚未呈现并为您提供动态创建的 HTML。

如 cmets 中所述,如果您需要程序来呈现此页面,您可能需要尝试 Selenium、PhantomJS、QT4 或 Ghost。

硒:https://pypi.python.org/pypi/selenium

PhantomJS:https://github.com/elias-winberg/phantomjs-python

幽灵:http://jeanphix.me/Ghost.py/

使用 QT4 抓取:https://impythonist.wordpress.com/2015/01/06/ultimate-guide-for-scraping-javascript-rendered-web-pages/

【讨论】:

    猜你喜欢
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2021-12-23
    相关资源
    最近更新 更多