如何使用python从web浏览器获取内容?

2024-04-27 04:15:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

遇到的问题:我一直在使用BeautifulSoup和requests来获取url内容。这些方法的问题在于,即使在生成表之前,我也能够获取web内容。

所以我有空桌子 <;表格>; <;thead>; <;/thead>; <;tbody>; <;/tbody>; <;/表格>

我的方法:现在我试图在浏览器中使用 打开“新建”选项卡(url),然后直接从浏览器获取内容。这将使服务器更新表,然后我将能够从页面中获取内容。

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

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

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

是否有其他方法让表加载到urllib2或美化组和请求?或者有什么方法可以直接从网页获取加载的内容。

谢谢


Tags: 方法orgltgthttpurl网页内容
2条回答

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

在阅读完源代码之后,看起来您要查找的信息可以在JSON格式的http://kff.org/datacenter.json?post_id=32781中找到。

要添加到Santiclause answer中,如果您想擦掉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,那么您应该这样做。在检查网站上的元素时,您可以通过查看network选项卡来找到它,这需要一些操作。

相关问题 更多 >