[英]How can I modify this html file in python?
我要修改一个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 文件,但我无法将所有这些都嵌套在范围循环中,关于如何做到这一点的任何想法或者是否有更简单的修改方法?
当它抛出AttributeError: 'NoneType' object has no attribute 'replace_with'
错误时,这意味着它无法在文本中find()
您想要的字符串,因此find()
函数返回None
并且绝对None
没有replace_with
属性.
这样做可以防止错误:
[...]
old=d.findAll("a",{"title":"Series"})
for n in range(129):
for i in old:
try:
new=i.find(text=re.compile(f"PAT-204635 - LAICHE AHMED ILYES - Number {n}")).replace_with (f"PAT-204635 - LAICHE MOHAMED ISLAM - Number {n}")
except:
continue
[...]
从我从你的问题中了解到,你想更换
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.