Python(或等)处理HTML以将target=blank添加到不在域lis中的atag

2024-03-29 09:57:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我以写网络内容为生。我用markdown编写代码,然后用pandoc处理,因为我必须提交HTML文件。在

所有出站链接都需要在提交的标记中有target=“\u blank”。网络内的链接不应该。我可以在作曲时将{:target=“_blank”}添加到降价文件中(也可以切换到Kramdown),但我宁愿在post中处理这个问题。在

我已经有了一个小bash脚本,它修复了通过pandoc渲染后的其他一些输出问题。我想在那里加上这个要求。在

我想象我的小脚本会包括一个域名列表,它会避免。我可以大致勾勒出这一点的基本思想,但我对正则表达式或文本处理的了解还不够,无法弄清细节。在

有什么帮助吗?在

(我以前主要是用Bash来做这件事,当时我刚开始这么做,我觉得我的需求很简单。我已经改用Python开发更新的东西,所以我在上面提到过。事实上,我不在乎用什么(在合理的范围内)。在

(另外——对于我自己的东西,我在页面上用三行Jquery来完成这一点,而不是把源内容弄乱。我无法让他相信这是正确的做法。)

干杯!谢谢!在


Tags: 文件代码标记网络脚本内容target链接
1条回答
网友
1楼 · 发布于 2024-03-29 09:57:07

正在为HTML使用正则表达式。。。leads to madness。使用专用的HTML处理工具,如Beautiful Soup 4。在

html = """
<a href="http://newwindow.example.com">New window</a>
<a href="http://samewindow.example.com">Same window</a>
"""

from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(html, 'html.parser')
href_re = re.compile(r"^http://newwindow\.example\.com")
links = soup.find_all('a', href=href_re)
for link in links:
    link['target'] = '_blank'
print unicode(soup)

相关问题 更多 >