过滤到 BeautifulSoup 中的特定 class

Filtering into specific class in BeautifulSoup

我正在使用 BeautifulSoup 做这样的事情:

for name in soup.find_all('div','name'):

当我使用这个过滤器时,我的理解是我将获得所有具有属性或 class 名称 name.

div 标签

但是,我不希望 div 标记的每个实例都具有 name 属性。我想要它们位于 HTML 文件的某个子树中的某些实例。更具体地说,是标签 <u1 class="list-box mb-3 spacer">...<u1\> 中的实例,它比我要查找的标签高两级。所以我的问题是,如何在 soup.find_all() 中编写过滤器以放大 class?

如果我混淆了任何术语,我提前道歉。这是我第一次尝试网络抓取。我不确定在文档中查看什么内容。

作为参考,这是我试图在其上进行网络抓取的网站: http://pd.appbank.net/ml39

您不能直接指定在某个父级内搜索标签,但您可以使用嵌套循环来完成它。首先,获取带有 class list-box mb-3 spacer 的所有 ul 标签,然后获取每个标签下的所有 div

div_list = []

for ul in soup.find_all('ul', {'class' : 'list-box mb-3 spacer'}):
    div_list.extend(ul.find_all('div', {'class' : 'name'}))

print(div_list)

因为 page 只有一个带有 class 'list-box mb-3 spacer' 的 <ul> 标签。您可以先找到 <ul class="list-box mb-3 spacer"> 标签,然后在 <ul class="list-box mb-3 spacer"> 中找到相应的 <div class="name">,如:

ulTag = soup.find("ul", attrs={"class": "list-box mb-3 spacer"}) divTags = ulTag.find_all("div", {"class": "name"}) print(divTags)