代码之家  ›  专栏  ›  技术社区  ›  Brynhildr Xie

过滤到BeautifulSoup中的特定类

  •  0
  • Brynhildr Xie  · 技术社区  · 8 年前

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

    当我使用这个过滤器时,我的理解是我将获得所有 div name .

    然而,我并不希望 使用属性标记 名称 . 我想要它们位于HTML文件的某个子树中的某些实例。更具体地说,标记中的实例 <u1 class="list-box mb-3 spacer">...<u1\> ,比我要找的标签高两层。所以我的问题是,我该如何写过滤器 soup.find_all()

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

    http://pd.appbank.net/ml39

    2 回复  |  直到 8 年前
        1
  •  1
  •   cs95 abhishek58g    8 年前

    您不能直接指定在某个父对象中搜索标记,但可以使用嵌套循环来完成。首先,获取所有 ul 带有类的标记 list-box mb-3 spacer div s位于每个下。

    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)
    
        2
  •  0
  •   sndsabin    8 年前

    page 只有一个 <ul> 用“列表框mb-3间隔符”类标记。你可以先找到 <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)