Beautiful Soup 4 在 table 内查找文本

Beautiful Soup 4 finding text within table

我一直在尝试使用 BS4 从 this 网页中抓取。我找不到我想要的数据(table 中的玩家名称,即 "Claiborne, Morris")。

当我使用:

soup = BeautifulSoup(r.content, "html.parser")
PlayerName = soup.find_all("table")
print (PlayerName)  

None 玩家的名字即使在输出中,只是显示不同 table。

当我使用:

soup = BeautifulSoup(r.content, 'html.parser')
texts = soup.findAll(text=True)
print(texts)

我能看到他们。

有什么关于如何挖掘和获取玩家名字的建议吗?

您要查找的 table 在页面呈现时由 JavaScript 动态填充。当您使用例如检索页面时requests,它只检索原始的、未修改的页面。这意味着您在浏览器中看到的一些元素将会丢失。

您可以在第二段代码中找到玩家姓名,这是因为它们包含在页面的 JavaScript 源代码中,如 JSON。但是,您将无法使用 BeautifulSoup 检索它们,因为它不会解析 JavaScript.

最好的选择是使用类似 Selenium 的东西,它尽可能模仿浏览器并执行 JavaScript 代码,从而呈现与您在自己的浏览器中看到的相同的页面内容浏览器。