首页 > 解决方案 > 如何在 python 中修改这个 html 文件?

问题描述

我想修改一个html文件,所以标签字体包含我要修改的文本

<font color="#FFFFFF" face="Arial">
          PAT-204635 - LAICHE AHMED ILYES - Number 4
         </font>

数字从 1 变为 128,所以我决定像这样使用 for n in range 循环(我在字符串的开头使用 f 来插值 n var):

old=d.findAll("font",{"color":"#FFFFFF"})
for n in range(129):
 for i in old:
  new=i.find(text=re.compile(f"PAT-204635 - LAICHE AHMED ILYES - Number {n}")).replace_with (f"PAT-204635 - LAICHE MOHAMED ISLAM - Number {n}")
  with open ("c:/users/dell/desktop/se2.html","wb") as ff:
   ff.write(d.prettify("utf-8"))

我收到一个错误:

AttributeError:“NonType”对象没有属性“replace_with”

我能够使用迭代变量 old 的相同方式更改 html 文件,但我无法将所有这些嵌套在范围循环中,关于如何做到这一点的任何想法或者是否有更简单的修改方法?

标签: pythonhtmlbeautifulsoup

解决方案


根据我从您的问题中了解到的情况,您想替换

PAT-204635 - LAICHE AHMED ILYES - 编号 {n}

PAT-204635 - LAICHE MOHAMED ISLAM - 编号 {n}

你可以试试这个。

from bs4 import BeautifulSoup
import re
d = """
<font color="#FFFFFF" face="Arial">
          PAT-204635 - LAICHE AHMED ILYES - Number 4
         </font>
<font color="#FFFFFF" face="Arial">
          PAT-204635 - LAICHE AHMED ILYES - Number 56
         </font>
<font color="#FFFFFF" face="Arial">
          PAT-204635 - LAICHE AHMED ILYES - Number 9
         </font>
<font color="#FFFFFF" face="Arial">
          PAT-204635 - LAICHE AHMED ILYES - Number 77
         </font>
"""
soup = BeautifulSoup(d, 'lxml')
old = soup.findAll("font",{"color":"#FFFFFF"})
new= soup.find_all(text=re.compile(r"PAT-204635 - LAICHE AHMED ILYES - Number \d+\b"))
for i in new:
    num = i.strip().split(' ')[-1]
    i = i.replace_with (f"PAT-204635 - LAICHE MOHAMED ISLAM - Number {num}")
        
print(soup.prettify())

这就是最终 HTML 代码的样子。

<html>
 <body>
  <font color="#FFFFFF" face="Arial">
   PAT-204635 - LAICHE MOHAMED ISLAM - Number 4
  </font>
  <font color="#FFFFFF" face="Arial">
   PAT-204635 - LAICHE MOHAMED ISLAM - Number 56
  </font>
  <font color="#FFFFFF" face="Arial">
   PAT-204635 - LAICHE MOHAMED ISLAM - Number 9
  </font>
  <font color="#FFFFFF" face="Arial">
   PAT-204635 - LAICHE MOHAMED ISLAM - Number 77
  </font>
 </body>
</html>

推荐阅读