使用lxml,您如何全局替换绝对链接的所有src属性?lxml - 如何将img src更改为绝对链接
3
A
回答
2
经过测试Mikko Ohtamaa的回答,这里有一些笔记。 它适用于很多标签并使用lxm,但有不同的情况,例如background-image:url(xxx)。所以我只是使用正则表达式来替代。 这里的解决方案,
content = re.sub('(?P<left>("|\'))\s*(?P<url>(\w|\.)+(/.+?)+)\s*(?P<right>("|\'))',
'\g<left>' + url[:url.rfind('/')] + '/\g<url>\g<right>', content)
content = re.sub('(?P<left>("|\'))\s*(?P<url>(/.+?)+)\s*(?P<right>("|\'))',
'\g<left>' + url[:url.find('/', 8)] + '\g<url>\g<right>', content)
6
下面是一个例子代码又包括<a href>
:
from lxml import etree, html
import urlparse
def fix_links(content, absolute_prefix):
"""
Rewrite relative links to be absolute links based on certain URL.
@param content: HTML snippet as a string
"""
if type(content) == str:
content = content.decode("utf-8")
parser = etree.HTMLParser()
content = content.strip()
tree = html.fragment_fromstring(content, create_parent=True)
def join(base, url):
"""
Join relative URL
"""
if not (url.startswith("/") or "://" in url):
return urlparse.urljoin(base, url)
else:
# Already absolute
return url
for node in tree.xpath('//*[@src]'):
url = node.get('src')
url = join(absolute_prefix, url)
node.set('src', url)
for node in tree.xpath('//*[@href]'):
href = node.get('href')
url = join(absolute_prefix, href)
node.set('href', url)
data = etree.tostring(tree, pretty_print=False, encoding="utf-8")
return data
The full story is available in Plone developer documentation。
相关问题
- 1. HTTP绝对链接被更改为HTTPS
- 2. 如何在javascript中将img src属性更改为data-src?
- 3. 可以将img src值更改为Image?
- 4. WordPress的 - 如何更改相对链接的绝对链接
- 5. 硒driver.getPageSource(),更改链接绝对
- 6. 如何将包含img网址的网址更改为img其他链接?
- 7. 如何用javascript更改img src?
- 8. 如何更改视图IMG SRC MVC
- 9. 更改URL中的WordPress:绝对链接
- 10. 使用jquery更改img src
- 11. 用jQuery更改img src
- 12. 使用jQuery更改img src
- 13. 改变IMG SRC
- 14. 想要将img更改为链接,我该怎么做?
- 15. img src“../”和“./”路径url链接
- 16. img src链接中的授权标头
- 17. Html Agility Pack链接和img src提取
- 18. 如何相对IMG SRC标签更新为使用javascript
- 19. 将相对符号链接转换为绝对符号链接
- 20. 如何修改lxml自动链接以更自由?
- 21. 修改IMG SRC attribut
- 22. 更改图片src为访问过的链接
- 23. 从填充数组中更改img src
- 24. 更改img src不显示图像
- 25. Javascript更改img src不工作
- 26. jquery更改img标记的src值
- 27. 更改src属性<img>
- 28. 更改img src在IE中失败?
- 29. 使用Ajax更改ASP.NET中的img src
- 30. jQuery更改img src基于href