python3汤,替换html元素内容并保存到文件

时间:2018-06-18 22:51:50

标签: python-3.x beautifulsoup

如何替换文件中html标签的文本内容并将其保存到另一个(某些)文件?

实施例。有一个文件index.html

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <p itemprop="someprop">SOME BIG TEXT</p>
    </body>
</html>

我需要更换文字&#34; SOME BIG TEXT&#34;在&#34; p&#34;标记为&#34;另一个大文本&#34;

from bs4 import BeautifulSoup

with open("index.html","r") as file:
 fcontent=file.read()
 sp=BeautifulSoup(fcontent,'lxml')
 t='new_text_for_replacement'

 print(sp.replace(sp.find(itemprop="someprop").text,t))

我做错了什么?

谢谢

2 个答案:

答案 0 :(得分:0)

问题取决于您搜索条件的方式,请尝试更改以下代码:

 print(sp.replace(sp.find(itemprop="someprop").text,t))

到此:

 print(sp.replace(sp.find({"itemprop":"someprop"}).text,t))

希望,这有助于

(PS:根据您的问题而假设您只有一件事需要更换)

答案 1 :(得分:0)

在输出文件上使用open()写入。

with open('index.html', 'r') as file:
    fcontent = file.read()

sp = BeautifulSoup(fcontent, 'html.parser')

t = 'new_text_for_replacement'

# replace the paragraph using `replace_with` method
sp.find(itemprop='someprop').replace_with(t)

# open another file for writing
with open('output.html', 'w') as fp:
    # write the current soup content
    fp.write(sp.prettify())

如果您只想替换段落的内部内容而不是段落元素本身,则可以设置.string属性。

sp.find(itemprop='someprop').string = t