表格元素未显示在 BeautifulSoup 中

spa*_*ark 4 html python beautifulsoup web-scraping python-requests

我正在尝试从此网站提取表数据

以下是代码——

import requests
from bs4 import BeautifulSoup as bs

page = requests.get('https://www.vitalityservicing.com/serviceapi/Monitoring/QueueDepth?tenantId=1')

soup = bs(page.text, "html.parser")

#None of the following method works
tb = soup.table 
#tb = soup.body.table
#tb = soup.find_all('table')
Run Code Online (Sandbox Code Playgroud)

当我尝试打印tb它时None

所以我尝试查看body下载的 HTML

print(soup.body.prettify())
Run Code Online (Sandbox Code Playgroud)

我没有看到table元素或其子元素。仅存在<body>和元素:<script>

print(soup.body) 的输出

但是当我检查 chrome 中的页面时,我看到了所有元素:

检查时出现的表及其子元素

我不明白为什么当我在 chrome 上加载页面时该table元素没有被下载requests.get

Pab*_*o M 6

您没有获得该内容,因为当您执行请求时,该内容不存在于页面中。然而

如果您检查脚本标记之间的 JavaScript 代码,您可以看到它正在动态生成表格。因此,您会在此之前收到 html 代码,因为它requests不是浏览器,不会执行 js,并且您看不到该表。

现在您知道为什么看不到表格了,您的下一个问题是如何在 javascript 执行后生成 HTML。别晕,这是可行的。您可能会发现这个问题的解决方案很有趣。

祝你好运