【问题标题】:Python BeautifulSoup - Find specific <li> in nested <div> & <ul>Python BeautifulSoup - 在嵌套的 <div> 和 <ul> 中查找特定的 <li>
【发布时间】:2018-03-25 09:24:24
【问题描述】:

我尝试从以下 HTML 中提取“HORROR”:

<div class="synopsis-section">
    <div class="movie-add-info left">
        <ul>
            <li>DIRECTOR : Matthew Vaughn</li>
            <li>ACTORS : </li>
            <li>DURATIONS : 107 Minutes</li>
            <li>CENSOR RATING : 17+</li>
            <li>GENRE : HORROR</li>
            <li>LANGUAGE : BAHASA INDONESIA</li>
       </ul>
     </div>

我是这样尝试的:

    >> response = get(url)
    >> html_soup = BeautifulSoup(response.text, 'html.parser')
    >> containers = html_soup.find('div', class_='movie-add-info left')
    >> containers.li

输出: 导演:马修·沃恩

“HORROR”没有特定的“li”; 任何人都可以帮助我摆脱“恐怖”吗?

【问题讨论】:

    标签: python html web web-scraping beautifulsoup


    【解决方案1】:
    import re
    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(my_html, 'lxml')
    
    result = soup.find('div', {'class': 'movie-add-info left'}).find('ul').findChildren(text=re.compile(r'GENRE'))
    
    print(result[0])
    

    输出:

    GENRE : HORROR
    

    如果你只想要'HORROR',就拆分吧:

    print(result[0].split()[2])
    

    【讨论】:

    • 我怀疑(供将来使用)OP 可能想要检查 if 'GENRE' in x.text 并获取正确的类型(在本例中为恐怖)以供进一步使用
    【解决方案2】:

    您可以使用 css 选择器在没有正则表达式的帮助下获得所需的输出。

    from lxml.html import fromstring
    
    root = fromstring(my_html)
    genre = root.cssselect(".movie-add-info li:contains('GENRE')")[0].text
    print(genre.split(":")[1].strip()) 
    

    结果:

    HORROR
    

    【讨论】:

      【解决方案3】:

      纯蟒蛇

      pattern = "<li>GENRE : "
      
      with open("file.html") as file:
          for line in file:
              if pattern in line:
                  print(line.replace(pattern, "").replace("</li>", "").strip())
      

      输出:

      恐怖

      【讨论】:

        猜你喜欢
        • 2012-10-30
        • 2021-11-14
        • 2018-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-29
        相关资源
        最近更新 更多