这是我的代码:
a='<title>aaa</title><title>aaa2</title><title>aaa3</title>'
import re
re.findall(r'<(title)>(.*)<(/title)>', a)
结果是:
[('title', 'aaa</title><title>aaa2</title><title>aaa3', '/title')]
如果我设计了一个爬虫来获取网站标题,我最终可能会得到类似这样的内容,而不是网站的标题。
我的问题是,我该如何限制findall
到一个单一的<title></title>
?
Use re.search
代替re.findall
如果您只想要一场比赛:
>>> s = '<title>aaa</title><title>aaa2</title><title>aaa3</title>'
>>> import re
>>> re.search('<title>(.*?)</title>', s).group(1)
'aaa'
如果您想要所有标签,那么您应该考虑将其更改为非贪婪的(即 -.*?
):
print re.findall(r'<title>(.*?)</title>', s)
# ['aaa', 'aaa2', 'aaa3']
但真正考虑使用 BeautifulSoup 或 lxml 或类似的方法来解析 HTML。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)