求助:Python使用BeautifulSoup无法打印网页数据的问题
解决Python中BeautifulSoup无法打印数据的问题
我帮你瞅了下代码,核心问题是你把urllib3返回的HTTPResponse对象直接传给了BeautifulSoup,而BeautifulSoup需要的是网页的实际内容文本,可不是这个响应对象本身哦!
具体修改方法
urllib3的manager.request()返回的是一个响应实例,你得先提取它的响应内容字节(也就是page.data),再传给BeautifulSoup。如果遇到编码乱码的情况,还可以把字节解码成字符串(比如page.data.decode('utf-8'))。
下面是修正后的完整代码:
import urllib3 import certifi from urllib3 import PoolManager from bs4 import BeautifulSoup urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) manager = PoolManager(num_pools=3, cert_reqs='CERT_REQUIRED', ca_certs=certifi.where()) page = manager.request('GET', "https://app.tipotapp.com/docs") # 先确认请求是否成功(状态码200代表请求正常) print(page.status) print(page.headers) # 提取响应内容,传给BeautifulSoup解析 soup = BeautifulSoup(page.data, 'html.parser') print(soup.prettify())
额外注意点
- 先检查
page.status是否为200:如果不是,说明请求没成功拿到网页内容,得排查网络或者目标站点的问题 - 你的Python版本是3.7.0a2(预览版),虽然基础功能没问题,但如果后续遇到奇怪的兼容性问题,建议换成同系列的稳定版本(比如3.7.16)
内容的提问来源于stack exchange,提问作者Naveen G
相关产品推荐
相关产品推荐

