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