使用BeautifulSoup打印类的内容



我想在类中打印文本。

这是HTML片段(它在许多类中,但在视觉上,它在威望旁边)->

<div class="sc-ikPAkQ ceimHt">
9882
</div>

这是我的代码->

from bs4 import BeautifulSoup
import requests
URL = "https://auntm.ai/champions/abomination/tier/6"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
for data in soup.findAll('div', attrs={"class": "sc-ikPAkQ ceimHt"}):
print(data)

我想从类中打印整数9882我试过了,但失败了。我该怎么做呢?

与典型的静态网页不同,该网页的主要内容是用JavaScript动态加载的。

也就是说,响应体(page.content)不会包含您最终看到的所有内容。相反,当您通过Web浏览器访问网页时,浏览器执行这些JavaScript代码,然后使用来自其他数据源的数据更新HTML(通常是通过另一个API调用或脚本本身中的一些硬编码数据)。换句话说,Web浏览器中DOM检查器中显示的最终HTML与使用requests.get获得的结果不同。(您可以通过打印page.content或点击"查看页面源代码"来验证这一点。(在页面上右键菜单中的条目)。

处理这种情况的一般方法是:

  1. 向硒求助。Selenium本质上是一个编程控制的Web浏览器(但没有真正的窗口),用于JS代码执行并正常呈现网页。
  2. 检查该页面上的JS代码和/或其他网络请求以提取数据源。它需要一些Web开发或JS的经验和知识。

您可以通过调用.get("text")

来获取文本
for data in soup.findAll('div', attrs={"class": "sc-ikPAkQ ceimHt"}):
data.get("text")

检查getText() vs text() vs get_text()获取文本的不同方式(并在一个div中获取孩子的文本与beautifulsoup回答您的问题)

最新更新