python中的匹配字符串模式
我有一个可以包含链接的字符串:python中的匹配字符串模式,python,regex,Python,Regex,我有一个可以包含链接的字符串: <a href="http://site1.com/">Hello</a> <a href="http://site2.com/">Hello2</a> <a href="http://site3.com">Hello3</a> ... ... 如何提取所有html标记“Hello”、“Hello2”、“Hello3”的文本(而不是链接)?我在想一个应该包含所有文本的列表 使用: 使用:
<a href="http://site1.com/">Hello</a> <a href="http://site2.com/">Hello2</a>
<a href="http://site3.com">Hello3</a> ...
...
如何提取所有html标记“Hello”、“Hello2”、“Hello3”的文本(而不是链接)?我在想一个应该包含所有文本的列表 使用:
使用:
您想查看
BeautifulSoup
library切勿使用正则表达式进行解析!从未!您想查看BeautifulSoup
library切勿使用正则表达式进行解析!从未!请不要使用/text()。特别是,它会在链接上做一些有趣的事情,比如
我会做//a/string()
。你的版本是等效的吗?我刚刚试过;出于某种原因,lxml引发了lxml.etree.xpathevaleror:Invalid expression
@larsmans:但为了回答您的问题,是的,将返回
和
之间的所有文本,而不带任何标记。string()
可能是XPath 2.0,lxml只支持1.0+1用于清洁溶液。请不要使用/text()
,这是一种清洁剂。特别是,它会在链接上做一些有趣的事情,比如
我会做//a/string()
。你的版本是等效的吗?我刚刚试过;出于某种原因,lxml引发了lxml.etree.xpathevaleror:Invalid expression
@larsmans:但为了回答您的问题,是的,将返回
和
之间的所有文本,而不带任何标记。string()
可能是XPath 2.0,lxml只支持1.0+1用于清洁溶液。
import lxml.html as LH
content = '''
<a href="http://site1.com/">Hello</a> <a href="http://site2.com/">Hello2</a>
<a href="http://site3.com">Hello3</a>
<a href="/">go <b>home</b>, dude!</a>
'''
doc = LH.fromstring(content)
texts = [elt.text_content() for elt in doc.xpath('//a')]
print(texts)
['Hello', 'Hello2', 'Hello3', 'go home, dude!']