python - 使用 python Selenium 获取动态生成的内容

标签 python html python-3.x selenium-webdriver

以前有人问过这个问题,但我已经搜索并尝试过,但仍然无法正常工作。我是 Selenium 的初学者。

看看:https://finance.yahoo.com/quote/FB

我正在尝试通过网络抓取“推荐评级”,在本例中,在撰写本文时为 2。我已经尝试过:

driver.get('https://finance.yahoo.com/quote/FB')
time.sleep(10)
rating = driver.find_element_by_css_selector('#Col2-4-QuoteModule-Proxy > div > section > div > div > div')
print(rating.text)

...这不会给我错误,但也不会打印任何文本。我也尝试过使用 xpath、class_name 等。相反,我尝试了:

source = driver.page_source
print(source)

这也不起作用,我只是获取没有动态生成内容的实际源代码。当我在 Chrome 中单击“查看源代码”时,它不存在。我尝试用 chrome 保存网页。没用。

然后我发现,如果我保存整个网页,包括图像和 css 文件以及所有内容,源代码与我只保存 HTML 的源代码不同。

Image

当我使用 Chrome 保存整个网页时,我得到的 HTML 文件确实包含我需要的信息,起初我想使用 pyautogui 来对每个网页进行 Ctrl + S,但必须有另一种方法。

我需要的信息显然就在 html 代码中,但我如何在不下载整个网页的情况下获取它?

最佳答案

试试这个来执行动态生成的内容(JavaScript):

driver.execute_script("return document.body.innerHTML")

查看类似问题: Running javascript in Selenium using Python

关于python - 使用 python Selenium 获取动态生成的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55239995/

相关文章:

python - 忽略 Unicode 错误

python - 在 debian/control 中定义分组条件依赖的任何方法?

python ftp文件线程或多进程

html - 获取背景颜色以覆盖网站的整个区域

Python 3 内置类型 __init__ 不调用 super().__init__?

python - 将函数映射到 pyspark RDD 后无法收集数据

html - (MUI v5) 无法将按钮放置在右上角

javascript - 如何在fabric.js中对视频进行效果

python - "Inheriting ' 使用 SQLAlchemy declarative_base() 在 VS 代码中的基础 ', which is not a class"

python - 无法获取所有正则表达式可能性的组合列表