【问题标题】:How do I extract text after <i class> tag?如何在 <i class> 标签后提取文本?
【发布时间】:2019-11-05 09:04:15
【问题描述】:

我正在尝试使用 beautifulSoup 从 div 类中打印出文本 'Dealer',但我不知道如何提取它。

我尝试打印 i 类,但文本 Dealer 没有出来

url = 'https://www.carlist.my/used-cars-for-sale/proton/malaysia'
response = requests.get(url, params={'page_number': 1})
soup = BeautifulSoup(response.text, 'lxml')
articles = soup.find_all('article')[:25]
seller_type = articles[4].find('div', class_ = 'item push-quarter--ends listing__spec--dealer')
seller_type_text = articles[4].find('i', class_ = 'icon icon--secondary muted valign--top push-quarter--right icon--user-formal')

print(seller_type.prettify())
print()
print(seller_type_text)

这是我得到的输出:

<div class="item push-quarter--ends listing__spec--dealer">
 <i class="icon icon--secondary muted valign--top push-quarter--right icon--user-formal">
 </i>
 Dealer
 <span class="flyout listing__badge listing__badge--trusted-seller inline--block valign--top push-quarter--left">
  <i class="icon icon--thumb-up">
  </i>
  <span class="flyout__content flyout__content--tip visuallyhidden--portable">
   This 'Trusted Dealer' has a proven track record of upholding the best car selling practices certified by Carlist.my
  </span>
 </span>
 <!-- used car -->
 <!-- BMW -->
</div>


<i class="icon icon--secondary muted valign--top push-quarter--right icon--user-formal"></i>

如何在 i 类之后和 span 类之前打印“经销商”这个词?

有人可以帮帮我吗?

非常感谢!

【问题讨论】:

    标签: python html web-scraping beautifulsoup lxml


    【解决方案1】:

    有一种更快的方法可以将i 标记元素的复合类名称之一与next_sibling 一起使用。

    如果您检查 html,您可以看到“经销商”是 i 标记的父 div 的一部分,并在 i 标记之后;所以,你可以抓住i标签然后使用next_sibling

    from bs4 import BeautifulSoup as bs
    import requests
    
    r = requests.get('https://www.carlist.my/used-cars-for-sale/proton/malaysia')
    soup = bs(r.content, 'lxml')
    print(soup.select_one('.icon--user-formal').next_sibling)
    

    【讨论】:

      【解决方案2】:

      查看您的卖家类型的内容属性。您会看到 Dealer 位于 Seller_type.contents[2]。换句话说,

      import requests
      from bs4 import BeautifulSoup
      url = 'https://www.carlist.my/used-cars-for-sale/proton/malaysia?profile_type=Dealer'
      response = requests.get(url, params={'page_number': 1})
      soup = BeautifulSoup(response.text, 'lxml')
      articles = soup.find_all('article')[:25]
      seller_type = articles[4].find('div', class_ = 'item push-quarter--ends listing__spec--dealer')
      print(seller_type.contents[2])
      

      【讨论】:

        【解决方案3】:
        import requests
        from bs4 import BeautifulSoup
        url = 'https://www.carlist.my/used-cars-for-sale/proton/malaysia?profile_type=Dealer'
        response = requests.get(url, params={'page_number': 1})
        soup = BeautifulSoup(response.text, 'lxml')
        articles = soup.find_all('article')[:25]
        seller_type = articles[4].find('div', class_ = 'item push-quarter--ends listing__spec--dealer')
        print(seller_type.contents[2])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-24
          • 2020-02-08
          • 2022-08-10
          • 1970-01-01
          • 1970-01-01
          • 2012-03-29
          相关资源
          最近更新 更多