格式化HTML标记

时间:2017-11-01 17:23:11

标签: python html python-2.7 format

我有一个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这样的?

2 个答案:

答案 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)