繁体   English   中英

过滤到BeautifulSoup中的特定类

[英]Filtering into specific class in BeautifulSoup

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

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

当我使用此过滤器时,我的理解是,我将获得所有带有属性或类名namediv标签。

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

如果我混淆了任何术语,我先向您道歉。 这是我第一次尝试进行网络抓取。 我不确定该看文档中的内容。

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

您不能直接在特定父级中指定标签搜索,但是可以使用嵌套循环来完成搜索。 首先,使用类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)

由于该页面只有一个<ul>标记,其类别为“ list-box mb-3 spacer”。 你可以先找到<ul class="list-box mb-3 spacer">标签,然后找到相应的<div class="name">在中<ul class="list-box mb-3 spacer">为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM