【问题标题】:How to get the content from web browser using python?如何使用python从网络浏览器获取内容?
【发布时间】:2014-08-10 10:52:40
【问题描述】:

我有一个网页: http://kff.org/womens-health-policy/state-indicator/ultrasound-requirements/# 我需要从这个网页中提取表格。

遇到的问题:我一直在使用 BeautifulSoup 并请求获取 url 内容。这些方法的问题在于,我什至能够在生成表格之前获取 Web 内容。

所以我得到了空桌子

我的方法:现在我正在尝试在浏览器中使用 webbrowser.open_new_tab(url) 然后直接从浏览器获取内容。这将使服务器更新表格,然后我将能够从页面获取内容。

问题:我不确定如何直接从 Web 浏览器获取信息。

现在我在 windows 系统上使用 Mozilla。

找到最近的链接website Link。但它给出了打开的网站而不是内容

还有其他方法可以让表格加载到 urllib2 或 beautifulsoup 和 requests 中吗?或者有什么方法可以直接从网页中获取加载的内容。

谢谢

【问题讨论】:

  • 查看 Kenneth Reitz 的requests 库。

标签: python web-scraping python-webbrowser


【解决方案1】:

要添加到 Santiclause 答案,如果你想抓取 java 脚本填充的数据,你需要一些东西来执行它。

为此,您可以使用 selenium 包和 webdriver,例如 Firefox 或 PhantomJS(无头)连接到页面,执行脚本并获取数据。

您的案例示例:

from selenium import webdriver
driver = webdriver.Firefox() # You can replace this with other web drivers
driver.get("http://kff.org/womens-health-policy/state-indicator/ultrasound-requirements/#")
source = driver.page_source # Here is your populated data.
driver.quit() # don't forget to quit the driver!

当然,如果您可以像提到的用户 Santiclause 那样访问直接 json,您应该这样做。在检查网站上的元素时,您可以通过检查网络选项卡来找到它,这需要一些尝试。

【讨论】:

  • 您好 Bernard,我正在尝试运行您的代码,但它给出了错误 WindowsError: [Error 87] The parameter is wrong"。我已经安装了 selenium。关于解决错误的任何想法。
  • @raghava.nitk 尝试将 Firefox 路径添加到您的系统,看起来 Selenium 无法找到 Firefox。如果您确实使用 PhantomJS,但是如果您不想设置路径,只需将 PhantomJS.exe 放在脚本的同一文件夹中,因为 webdriver 可执行文件的路径默认为当前目录,您可以通过更改第一个参数来更改它第 2 行。
【解决方案2】:

表格没有被填充的原因是因为 Python 没有处理它使用 urllib2 接收到的页面 - 所以没有 DOM,没有运行的 Javascript 等等。

阅读源代码后,您正在寻找的信息似乎可以在 http://kff.org/datacenter.json?post_id=32781 以 JSON 格式找到。

【讨论】:

    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2012-08-07
    • 1970-01-01
    • 2021-04-07
    • 2014-04-16
    • 2020-05-05
    相关资源
    最近更新 更多