过滤到 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)
我正在使用 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)