Python BeautifulSoup-查找特定的<;李>;在嵌套中<;部门>&&书信电报;ul>;

Python BeautifulSoup-查找特定的<;李>;在嵌套中<;部门>&&书信电报;ul>;,python,html,web,web-scraping,beautifulsoup,Python,Html,Web,Web Scraping,Beautifulsoup,我尝试从以下HTML中提取“恐怖”: <div class="synopsis-section"> <div class="movie-add-info left"> <ul> <li>DIRECTOR : Matthew Vaughn</li> <li>ACTORS : </li> <li>DURATIO

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

<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>
输出: 导演:马修·沃恩

“恐怖”没有具体的“李”字; 有谁能帮我摆脱这件事的“恐惧”吗

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
如果您只想要“恐怖”,只需将其拆分:

print(result[0].split()[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
纯python
pattern=“
  • 流派:” 打开(“file.html”)作为文件: 对于文件中的行: 如果模式一致: 打印(line.replace(模式“”).replace(“
  • ”,“).strip())
    输出:

    GENRE : HORROR
    
    恐怖

    我怀疑(为了将来的使用)OP可能想要检查x.text中的'GENRE'是否为'GENRE',并抓取正确的类型(在本例中为恐怖),以便进一步使用
    pattern = "<li>GENRE : "
    
    with open("file.html") as file:
        for line in file:
            if pattern in line:
                print(line.replace(pattern, "").replace("</li>", "").strip())