Beautiful Soup 没有从网站上获取一些数据

时间:2021-02-12 16:14:12

标签: python selenium web-scraping beautifulsoup selenium-chromedriver

我一直在尝试使用来自 https://www.eia.gov/coal/markets/ 的美丽汤来抓取一些数据。但是,当我解析内容时,一些数据根本不显示。这些数据字段在 chrome 检查器中可见,但在汤中不可见。问题是它们似乎不是文本元素。我认为它们是使用外部数据库提供的。我附上了下面的截图。还有其他方法可以抓取这些数据吗?

提前致谢。

Google 检查器:

enter image description here

美汤解析内容:

enter image description here

4 个答案:

答案 0 :(得分:1)

您的问题不够详细,但此信息可能是动态加载的,您没有获取整个页面源。 如果没有您的代码,很难看出您是否正在使用 selenium 来执行此操作(您将这些问题标记为这样),这可能表明您正在使用 page_source 这并不能保证您正在查看的页面的完整完整源代码。 如果您使用请求,则更不可能捕获整个页面的完整源代码。

答案 1 :(得分:1)

数据是通过ajax加载的,所以在初始文档中是没有的。如果您转到 chrome 开发工具中的网络选项卡,您将看到该站点与 https://www.eia.gov/coal/markets/coal_markets_json.php 联系。我在响应中搜索了一些数字,看起来您要查找的数据就在那里。

这是来自后端的直接 json 响应。如果你能让它工作,它比 selenium 更好。

答案 2 :(得分:1)

@DMart 是正确的。您正在查找的数据由 Javascript 填充,请查看页面源代码中的第 1629 行。 Beautiful Soup 不充当客户端浏览器,因此 JS 无处可执行。所以看起来硒是你最好的选择。

有关详细信息,请参阅 This thread

答案 3 :(得分:0)

谢谢大家!

使用 webdriver 使用 selenium 打开页面,然后使用 Beautiful Soup 解析页面源。

<div id="alert-text">

enter image description here

相关问题