【问题标题】:How to parse a specific HTML tag using BeautifulSoup?如何使用 BeautifulSoup 解析特定的 HTML 标签?
【发布时间】:2022-01-20 03:36:57
【问题描述】:

我正在尝试抓取这个网站:https://datausa.io/profile/university/cuny-city-college/

我的代码只检索第一个匹配的 div 类标签,即学费,但我只想检索食宿费用。如何解析特定标签?

import requests

url = requests.get('https://datausa.io/profile/university/cuny-city-college/')
soup = BeautifulSoup(url.text, 'html.parser')

rb = soup.find('div',class_='stat-value')

print(rb.prettify)

【问题讨论】:

    标签: python parsing web-scraping beautifulsoup html-parsing


    【解决方案1】:

    您可以在state-titel 上使用find 方法并在其中添加特定文本以便它会找到该标签,我们必须从中提取以前的标签,因此使用previous 方法!

    import requests
    
    url = requests.get('https://datausa.io/profile/university/cuny-city-college/')
    soup = BeautifulSoup(url.text, 'html.parser')
    
    rb = soup.find('div',class_='stat-title',text="Room and Board").find_previous()
    print(rb.get_text())
    

    输出:

    $15,406
    

    【讨论】:

    • 谢谢!你是最棒的
    【解决方案2】:

    您可以使用 :has:-soup-contains 和相邻的同级组合符 (+) 来指定 stat-value 和紧邻的 stat-title,其中包含文本“Room and Board”

    import requests
    from bs4 import BeautifulSoup as bs
    
    soup = bs(requests.get('https://datausa.io/profile/university/cuny-city-college/').text)
    print(soup.select_one('.stat-value:has(+ .stat-title:-soup-contains("Room and Board"))').text)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2021-10-12
      • 2013-03-20
      • 2018-06-15
      • 2011-04-04
      • 2016-12-30
      • 1970-01-01
      相关资源
      最近更新 更多