2024-04-29 13:39:13 发布
网友
我有一个从Wikipedia获得的HTML文件,希望找到页面上的每个链接,例如/wiki/Absinthe,并将其替换为当前添加到前面的目录,例如/home/fergus/wikiget/wiki/Absinthe,因此:
/wiki/Absinthe
/home/fergus/wikiget/wiki/Absinthe
<a href="/wiki/Absinthe">Absinthe</a>
变成:
整个文件都是这样。在
你有什么想法吗?我很乐意使用beauthulsoup或Regex!在
如果这真的是你要做的,你可以用sed和它的-i选项来重写文件:
sed
-i
sed -e 's,href="/wiki,href="/home/fergus/wikiget/wiki,' wiki-file.html
但是,这里有一个使用可爱的lxmlAPI的Python解决方案,以防您需要执行更复杂的操作,或者可能有格式错误的HTML等:
注意,lxml对于这类任务可能比BeautifulSoup更好,因为BeautifulSoup的作者给出了reasons。在
lxml
这是使用re模块的解决方案:
re
#!/usr/bin/env python import re open('output.html', 'w').write(re.sub('href="http://en.wikipedia.org', 'href="/home/fergus/wikiget/wiki/Absinthe', open('file.html').read()))
这是另一个没有使用re的方法:
可以使用函数re.sub公司公司名称:
def match(m): return '<a href="/home/fergus/wikiget' + m.group(1) + '">' r = re.compile(r'<a\shref="([^"]+)">') r.sub(match, yourtext)
例如:
如果这真的是你要做的,你可以用
sed
和它的-i
选项来重写文件:但是,这里有一个使用可爱的lxmlAPI的Python解决方案,以防您需要执行更复杂的操作,或者可能有格式错误的HTML等:
^{pr2}$注意,
lxml
对于这类任务可能比BeautifulSoup更好,因为BeautifulSoup的作者给出了reasons。在这是使用
re
模块的解决方案:这是另一个没有使用
^{pr2}$re
的方法:可以使用函数re.sub公司公司名称:
例如:
^{pr2}$相关问题 更多 >
编程相关推荐