为什么使用BeautifulSoup读取本地HTML后打印无输出,路径正确且无报错
爬虫无输出问题排查
问题背景
正在对站点https://www.metrolyrics.com/bob-dylan-lyrics.html进行数据抓取,使用的示例代码如下:
from bs4 import BeautifulSoup import requests import lxml with open('bdmain.html') as html_file: soup = BeautifulSoup(html_file, 'lxml') print(soup)
已确认本地bdmain.html文件路径无误,代码运行时没有抛出任何错误信息,但执行print(soup)语句时没有任何内容输出。
可能的原因
- 本地bdmain.html文件本身为空:保存网页源码到本地的步骤执行失败,导致文件内没有任何内容,BeautifulSoup解析空文件自然无内容输出,可手动打开该文件查看是否存在完整的HTML源码。
- 编码适配问题:未指定文件读取编码,若HTML文件使用utf-8以外的编码存储,默认读取方式会解析失败返回空内容,可修改打开文件的代码为
with open('bdmain.html', 'r', encoding='utf-8') as html_file:测试。 - 解析器兼容问题:lxml解析器对部分不规范的HTML源码兼容性较差,解析时可能静默失败返回空对象,可尝试更换为Python内置解析器测试:
soup = BeautifulSoup(html_file, 'html.parser')。 - 文件读取指针位置异常:如果此前有对同一个文件对象进行过读取操作,指针已经移动到文件末尾,再次读取会拿到空内容,确认本次运行前没有其他操作该文件的代码逻辑。
内容的提问来源于stack exchange,提问作者guccipix
相关产品推荐
相关产品推荐

