我有一个HTML页面,如下所示:
<html>
<head>
<title>TEST</title>
</head>
<body>
<p>Testing</p>
<iframe src="{}" width="500" height="500"></iframe>
</body>
</html>
我需要使用网站链接格式化<iframe src="{}
部分,例如:<iframe src="https://google.com"
。
我的问题是,如何使用python内置库(或外部)格式化HTML字符串中的标记?这是我的尝试:
retval = ""
for item in HTML_page.readlines():
if "<iframe src" in item:
item = item.format(LINK)
retval += item
else:
retval += item
return retval
这有效,但不是很漂亮。有没有办法可以做到更像python这样的?
答案 0 :(得分:1)
使用beautifulsoup,您可以将其作为
from bs4 import BeautifulSoup
url = 'insert your url here'
with open('file.html','r') as f:
text = f.read()
soup = BeautifulSoup(text,'html.parser')
soup.body.iframe['src'] = url
with open('file.html','w') as f:
f.write(str(soup))
不使用任何第三方库,因为您已经拥有它。我删除了一些语句并修改了代码
retval = ""
HTML_page = open('file.html','r')
LINK = 'google.com'
for item in HTML_page.readlines():
if "<iframe src" in item:
item = item.format(LINK)
retval += item
HTML_page.close()
print(retval)
答案 1 :(得分:0)
如果HTML代码如下所示:
<html>
<head>
<title>TEST</title>
</head>
<body>
<p>Foo</p>
<iframe src="{}" width="500" height="500"></iframe>
<p>Bar</p>
<iframe src="{}" width="500" height="500"></iframe>
</body>
</html>
然后,您只需在所有链接上使用str.format
:
URLS = (
"https://www.example.com/",
"https://www.example.com/"
)
html_code = """<html>
<head>
<title>TEST</title>
</head>
<body>
<p>Foo</p>
<iframe src="{}" width="500" height="500"></iframe>
<p>Bar</p>
<iframe src="{}" width="500" height="500"></iframe>
</body>
</html>
"""
html_code = html_code.format(*URLS)