我想从html页面更改链接,如下所示:
//html
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>this is a simple text in html file</p>
<a href="https://google.com">Google</a>
<a href="/frontend/login/">Login</a>
<a href="/something/work/">Something</a>
</body>
</html>
//Result
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>this is a simple text in html file</p>
<a href="https://google.com">Google</a>
<a href="/more/frontend/login/part/">Login</a>
<a href="/more/something/work/extra/">Something</a>
</body>
</html>
那么如何更改html的结果并使用python将其另存为html?
答案 0 :(得分:0)
好吧,通过Regex
做到这一点非常简单。
使用href="\/([^"]*)
作为样式,并使用href="\/more\/\1additional
作为替换样式。
在这里看看:
https://regex101.com/r/7ACBFY/2
先前的“ 50%尝试”(对不起,我想念您的第二部分):
答案 1 :(得分:0)
如果您将html文件存储为字符串(例如html
),则可以执行简单的替换操作:
result = html.replace('<a href="/', '<a href="/more/')
答案 2 :(得分:0)
我已经自己解决了。但是我认为这可以帮助很多人。这就是为什么我要回答我的问题并将其公开显示
谢谢Nicolas。他30%到50%的解决方案为我提供了完整的解决方案。
import re
regex = r"href=\"\/"
test_str = ("<html>\n"
" <head>\n"
" <title>Hello</title>\n"
" </head>\n"
" <body>\n"
" <p>this is a simple text in html file</p>\n"
" <a href=\"https://google.com\">Google</a>\n"
" <a href=\"/front-end/login/\">Login</a>\n"
" <a href=\"/something/work/\">Something</a>\n"
" </body>\n"
" </html>")
subst = "href=\"/more/"
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
subst2 = "\\1hello/"
regex2 = r"(href=\"/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\), ]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)"
result2 = re.sub(regex2, subst2, result, 0, re.MULTILINE)
if result2:
print (result2)
writtingtofile = open("solution.html","w")
writtingtofile.write(result2)
writtingtofile.close()
输出: