在html DOM中查找元素

时间:2016-06-08 20:40:29

标签: python html beautifulsoup

我想从这个HTML DOM中获取Name / logo / Description / type 我使用python Beautiful Soup并获得Description和Type 使用

soup = BeautifulSoup(html_data)
for h in soup.findAll("span", { "class" : "description" }):
     print h.text

但无法在Json文件中获取名称和徽标。

<a href="/organization/flipkart">
    <div class="container organization_autocomplete">
      <div class="logo">
        <img src="https://abcdsdsdsf/imm.jpg">
      </div>
      <div class="identity container">
        <div class="follow_card_wrapper"><div class="link_container"><div class="name follow_card" data-name="Flipkart" data-type="Organization" data-uuid="43b9e775b843f194fb96d266684cfb53" data-permalink="/organization/flipkart" data-image="https://abcdsdsdsf/imm.jpg">Flipkart</div></div><div class="card_inner"></div></div>
        <div class="content container">
          <span class="type">Company - </span>
            <span class="description">
              Flipkart is an online shopping destination for electronics, books, music and movies.
            </span>
        </div>
      </div>
    </div>
  </a>

我尝试使用相同的方法替换Class name,但获取空输出。 任何人都可以告诉如何在这种情况下处理嵌套类

修改 我很欣赏Alecxe的努力但是看看alecxe的答案我有些困惑。

如果有人可以解释他们所在的课程,那将是件好事    有多个名称,如

<div class=container
   organization_autocomplete>

在此如何决定使用哪一个    用于选择名称容器或organization_autocomplete和    同样地

  • 另外,为了让我们说出为什么我们没有使用这些课程 类=&#34; follow_card_wrapper&#34;&GT; class =&#34; name follow_card&#34;

1 个答案:

答案 0 :(得分:2)

我会使用类属性获取名称和徽标:

logo = soup.find("div", class_="logo").img["src"]
name = soup.find("div", class_="identity").find("div", class_="name").get_text()

print(logo, name)

或者,通过CSS selectors

logo = soup.select_one("div.logo img")["src"]
name = soup.select_one("div.identity div.name").get_text()

print(logo, name)

至于选择使用哪个类,以及一般应用哪种定位技术 - 没有灵丹妙药。但是,建议依赖于ID和数据导向的&#34;类或其他面向数据的属性。例如,在您的情况下,container类更多&#34;布局&#34; -oriented而不是&#34;数据&#34; -oriented。