我是lxml的新手,我正在尝试使用iterlinks()来重写链接.
import lxml.html
html = lxml.html.document_fromstring(doc)
for element, attribute, link, pos in html.iterlinks():
if attibute == "src":
link = link.replace('foo', 'bar')
print lxml.html.tostring(html)
Run Code Online (Sandbox Code Playgroud)
但是,这实际上并没有取代链接.我知道我可以使用.rewrite_links,但iterlinks提供了有关每个链接的更多信息,所以我更喜欢使用它.
提前致谢.
您不必仅为变量名称分配新的(字符串)值link,而是必须更改元素本身,在这种情况下,通过设置其src属性:
new_src = link.replace('foo', 'bar') # or element.get('src').replace('foo', 'bar')
element.set('src', new_src)
Run Code Online (Sandbox Code Playgroud)
请注意 - 如果您知道您感兴趣的"链接",例如,只有img元素 - 您也可以通过使用.findall()(或xpath或css选择器)而不是使用来获取元素.iterlinks().