为什么这个regexp不起作用

2024-04-29 20:39:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网页的源代码,格式如下:

<span class="l r positive-icon">
Turkish
</span>
<span>
The.Mist[2007]DvDrip[Eng]-aXXo
</span>
<span class="l r neutral-icon">
Vietnamese
</span>
<span>
The.Mist.2007.720p.Bluray.x264.YIFY 
</span>

如您所见,有“l r正图标”“l r中性图标”类的跨距。我只想得到语言,所以任何类的跨度之间的一切。我使用这个regexp,但它给了我一个空列表:

allLanguages = re.findall('<span class=".*">\s(.*)\s</span>', allLanguagesTags)

allLanguagesTags包含上面显示的源代码。谁能给我一个提示吗


Tags: the网页源代码格式engclass图标icon
1条回答
网友
1楼 · 发布于 2024-04-29 20:39:59

不要使用正则表达式。使用实际的HTML解析器。我建议您改用BeautifulSoup

from bs4 import BeautifulSoup

soup = BeautifulSoup(yourhtml)
languages = [s.get_text().strip() for s in soup.find_all('span', class_=True)]

演示:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''\
... <span class="l r positive-icon">
... Turkish
... </span>
... <span>
... The.Mist[2007]DvDrip[Eng]-aXXo
... </span>
... <span class="l r neutral-icon">
... Vietnamese
... </span>
... <span>
... The.Mist.2007.720p.Bluray.x264.YIFY 
... </span>
... ''')
>>> [s.get_text().strip() for s in soup.find_all('span', class_=True)]
[u'Turkish', u'Vietnamese']

相关问题 更多 >