我尝试从以下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
输出: &lt;'li'&gt;主任:Matthew Vaughn&lt;'/ li'&gt;
'HORROR'没有具体的'li'; 任何人都可以帮助我从中获取“HORROR”吗?
答案 0 :(得分: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])
答案 1 :(得分:0)
您可以使用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
答案 2 :(得分:0)
pattern = "<li>GENRE : "
with open("file.html") as file:
for line in file:
if pattern in line:
print(line.replace(pattern, "").replace("</li>", "").strip())
输出:
恐怖