首页 > 解决方案 > 如何使用 CSS 选择器来选择动态更改的类名?

问题描述

我正在尝试像这样解析 HTML:

<div id="layers" class="r-1d2f490 r-u8s1d r-zchlnj r-ipm5af r-184en5c" style=""><div class="css-1dbjc4n r-aqfbo4 r-1p0dtai r-1d2f490 r-12vffkv r-1xcajam r-zchlnj">

在我的情况下,类名随着每个请求不断变化,我如何解析这个元素?

我试过了:

from bs4 import BeautifulSoup

container = soup.find_all('div', attrs={'class':'r-1d2f490 r-u8s1d r-zchlnj r-ipm5af r-184en5c"'})
print(container)

它有时会产生结果,但有时会返回一个空列表。如何使用带有正则表达式的 CSS 选择器来抓取类?

标签: pythonregexweb-scrapingbeautifulsoup

解决方案


由于您的班级名称发生了变化,请尝试定位id(应该是唯一的)。

您可以将id作为关键字参数传递给.find(). 在你的情况下使用id="layers"

soup = BeautifulSoup(html, "html.parser")

print(soup.find("div", id="layers"))

推荐阅读