python3 读取html文件,关于Python3.7的BeautifulSoup解析html文件缺失内容的问题

本文描述了在使用Python3的BeautifulSoup解析HTML文件时遇到内容缺失的问题,分析过程包括检查原始HTML、BeautifulSoup解析后的内容,发现问题是由于BeautifulSoup处理HTML注释时异常导致。解决方案是通过正则表达式去除HTML注释,然后正常解析所需标签。代码示例展示了如何实现这一过程,并提到在网络请求时可能因user_agent问题导致HTML内容缺失,更换user_agent可解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

从网站爬取html,用BeautifulSoup解析标签内容,发现用尽办法都找不到想要的标签。

分析过程

(1)把urlopen请求到的html打印出来,body是完整的;

(2)把BeautifulSoup解析后的soup打印出来,body只有少量的div,很快结束了。但后面还有一堆未格式化的html内容,被排斥在body外;

(3)一定是BeautifulSoup解析过程出问题了,由于直接请求到的html没有格式化过,太难看,copy到html在线格式化网页去格式化后再看看;

(4)对比格式化后的html和BeautifulSoup解析后的soup的内容,发现问题:soup在处理“”这样的注释时,不知道抽什么风直接结束了,在注释前面补上了和,导致缓存的soup缺失了后面大量的内容。

解决方案

注释在爬取数据过程中是无所谓的,可以用正则匹配过滤,之后就能正常解析自己想要的标签了。

代码

# -*- coding: utf-8 -*-

import urllib.request

from bs4 import BeautifulSoup

import re

import io

import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码

user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers = {'User-Agent':user_agent}

url = "https://www.amazon.com/dp/B07K97BQDF"

#导入urlopen函数

#读取网页内容,如果网页中又中文要用“utf-8”解码

req = urllib.reque

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值