javascript - Python 网页抓取 : BeautifulSoup not showing all html source content

标签 javascript python selenium-webdriver iframe web-scraping

我对网页抓取和 python 还很陌生。我正在尝试制作一个脚本,从 http://finra-markets.morningstar.com/BondCenter/BondDetail.jsp?symbol=NFLX4333665&ticker=C647273 获取最后交易价格但是当我用 python 请求它时,有些内容似乎丢失了。 我以前制作过从其他网站成功获取数据的脚本,但我似乎无法让我的代码在这个网站上工作。
这是我目前的代码:

from bs4 import BeautifulSoup
import requests

r = requests.get("http://finra-markets.morningstar.com/BondCenter/BondDetail.jsp?symbol=NFLX4333665&ticker=C647273")
c = r.content
soup = BeautifulSoup(c, "html.parser")

all = soup.find_all("div", {"class": "gr_row_a5"})
print(soup)


当我运行它时,大部分重要数据都丢失了。

任何帮助将不胜感激。

最佳答案

一些网页使用 Javascript 填充数据,看起来是页面内容的内容实际上并不在 Beautiful Soup 正在处理的 HTML 中。这是其中一页。

这令人困惑,因为如果您在(例如)Safari 或 Chrome 中使用 Web 开发人员工具检查显示的页面,您会发现已呈现到 DOM 中的 HTML。但是,如果您查看页面源代码,则根本找不到。

所以对于这个页面,你不能用Beautiful Soup解析出数据。一种选择是以更直接的方式为您提供数据的网站。另一个可能是尝试 requests-html库,它可以运行 Javascript,然后你可以从呈现的 HTML 中抓取数据。 (注意:我自己从未尝试过 requests-html,以这种方式运行 Javascript 时应该小心,但这是一种可行的方式。)还有一些项目已经有人使用 Selenium或类似于获取 HTML 的方式。但是 requests-html 看起来是最直接的尝试。

关于javascript - Python 网页抓取 : BeautifulSoup not showing all html source content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53753782/

相关文章:

javascript - 如何显示选定的表格行?

java - Java 中的 ArrayList 与 Python 中的列表

java - 如何检查 for 循环中的条件并打印一次语句?

javascript - 在 JavaScript 中获取数组中对象的特定字段的总和

javascript - 如何在这里使用 Find() : Vue. js

javascript - 鼠标退出时违反内容安全策略

python - 我如何通过: as a function parameter in python?

python - 允许带有 nargs 的位置命令行参数由标志分隔

python - 为什么 selenium 在执行这段代码之前要等待很长时间?

amazon-web-services - AWS Lambda 的限制