编码格式问题
Traceback (most recent call last):
File “D:/PyCharm/text_processing/解析并清洗HTML.py”, line 6, in <module>
lines = f.readlines()
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa2 in position 216: illegal multibyte sequence
遇到此情况,就是编码格式的问题了,我们应该设置编码格式为UTF-8:
with open(‘test.html’, ‘r’, encoding=‘UTF-8’) as f:
bs4.FeatureNotFound
Traceback (most recent call last):
File “D:/PyCharm/text_processing/解析并清洗HTML.py”, line 11, in <module>
soup = BeautifulSoup(string, “lxml”)
File “D:\PyCharm\text_processing\venv\lib\site-packages\bs4\__init__.py”, line 228, in __init__
% “,”.join(features))
bs4.FeatureNotFound: Couldn’t find a tree builder with the features you requested: lxml. Do you need to install a parser library?
这个问题的产生原因是缺少lxml库,可以pip一下:pip3 install lxml
测试代码
from bs4 importstring = ""with open('test.html', 'r', encoding='UTF-8') as f:lines = f.readlines()for i in lines:string = '%s %s' % (string, i)# 解析HTMLsoup = BeautifulSoup(string, "lxml")# 查找id为"b_id"的div标签,并查看文本print(soup.find("div", {"id": "b_id"}).text)
<!DOCTYPE html><html lang="ch"><head><meta charset="UTF-8"><title>测试页面</title></head><body><div id="a_id"><div id="b_id"><div id="c_id">大碗宽面,真香!</div></div></div></body></html>
大碗宽面,真香!
<!DOCTYPE html><html lang="ch"><head><meta charset="UTF-8"><title>测试页面</title></head><body><div id="a_id"><div id="b_id"><div id="c_id">大碗宽面,真香!</div></div></div></body></html>
大碗宽面,真香!
<!DOCTYPE html><html lang="ch"><head><meta charset="UTF-8"><title>测试页面</title></head><body><div id="a_id"><div id="b_id"><div id="c_id">大碗宽面,真香!</div></div></div></body></html>
大碗宽面,真香!
可见这东西与文档格式有关,它会关注到空白字符,和浏览器解析显示不同。