Python BeautifulSoup-查找特定的<;李>;在嵌套中<;部门>&&书信电报;ul>;
我尝试从以下HTML中提取“恐怖”: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
<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())