我有一个用lxml的Cleaner清理过的字符串,因此所有链接现在都是Content的形式。现在我想删除所有没有href属性的链接,例如
<a rel="nofollow">Link to be removed</a>
应该成为
Link to be removed
同样的:
<a>Other link to be removed</a>
Shoudl成为:
Other link to be removed
只是所有缺少href属性的链接。它不一定是正则表达式,但由于lxml返回一个干净的标记结构,它应该是可能的。我需要的是一个剥离了这种非功能性标签的源字符串。
答案 0 :(得分:2)
您可以使用BeautifulSoup
,这样可以更轻松地找到没有<a>
的{{1}}代码:
href
答案 1 :(得分:1)
使用drop_tag
方法。
import lxml.html
root = lxml.html.fromstring('<div>Test <a rel="nofollow">Link to be <b>removed</b></a>. <a href="#">link</a>')
for a in root.xpath('a[not(@href)]'):
a.drop_tag()
assert lxml.html.tostring(root) == '<div>Test Link to be <b>removed</b>. <a href="#">link</a></div>'
.drop_tag(): 删除标记,但保留其子项和文本。