python - Python 3 使用 BeautifulSoup 抓取网页导致 UnicodeDecodeError
问题描述
我正在做一个个人项目。我正在尝试解析网页。不幸的是,我没有意识到抓取网站可能会暂停您对网页的访问。我使用 hide.me 制作了网站的本地副本,但显然它添加了使 BeautifulSoup 难以阅读的信息。这是我的代码:
def pull_safe(location):
url = (os.getcwd())+'/HTML_SOURCES/'+location
page = open(url,encoding="ascii")
soup = BeautifulSoup(page, "html.parser", exclude_encodings=["ascii"])
hospital = list()
templist = list()
tempcount = 0
for td in soup.find('div', {'class':'report'}).parent.find_all('td'):
if tempcount !=5:
templist.append(td.text)
tempcount+=1
else:
templist.append(td.text)
hospital.append(templist)
templist = list()
tempcount = 0
return hospital
这是我得到的例外:
Traceback (most recent call last):
File "/home/memeputer/Documents/Projects/NYC Hospital Bed count/main.py", line 51, in <module>
g = pull_safe(item)
File "/home/memeputer/Documents/Projects/NYC Hospital Bed count/main.py", line 17, in pull_safe
soup = BeautifulSoup(page, "html.parser", exclude_encodings=["utf-8"])
File "/home/memeputer/Documents/Projects/NYC Hospital Bed count/venv/lib/python3.8/site-packages/bs4/__init__.py", line 286, in __init__
markup = markup.read()
File "/usr/lib/python3.8/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa9 in position 59903: invalid start byte
任何帮助表示赞赏。
解决方案
推荐阅读
- ios - SwiftUI - 与 Microsoft 的 Firebase 身份验证
- c++ - 绝对值排序,使用自定义比较器
- r - 创建返回伽马分布的函数的更好方法?
- javascript - 谷歌脚本循环复制到循环行
- google-analytics - 谷歌分析是否获取我所有的域 cookie
- python - 使用 Azure AD 对反应应用程序和后端应用程序进行身份验证(python)
- mysql - 通过 shell 脚本使用 gcloud 控制台连接到 MySQL 数据库
- node.js - POST 请求在 Nodejs Expressjs MVC 应用程序中只工作一次
- javascript - 如何在 ReactJS 中将变量 id 或类名分配给 div
- c# - 需要替换一个字符串 C#