当前位置: 首页 > news >正文

无锡网站建设技术网站开发工程师

无锡网站建设技术,网站开发工程师,网站开发流程联系方式,重庆住房建设工程信息网官网使用chardet库自动检测requests所获得html文档的编码 使用requests和BeautifulSoup库获取某个页面带来的乱码问题 使用requests配合BeautifulSoup库,可以轻松地从网页中提取数据。但是,当网页返回的编码格式与Python默认的编码格式不一致时&#xff0c…

使用chardet库自动检测requests所获得html文档的编码

使用requestsBeautifulSoup库获取某个页面带来的乱码问题

使用requests配合BeautifulSoup库,可以轻松地从网页中提取数据。但是,当网页返回的编码格式与Python默认的编码格式不一致时,就会导致乱码问题。

以如下代码为例,它会获取到一段乱码的html:

import requests
from bs4 import BeautifulSoup# 目标 URL
url = 'https://finance.sina.com.cn/realstock/company/sh600050/nc.shtml'# 发送 HTTP GET 请求
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 获取网页内容html_content = response.text# 使用 BeautifulSoup 解析 HTML 内容soup = BeautifulSoup(html_content, 'html.parser')# 要查找的 IDtarget_id = 'hqDetails'# 查找具有特定 ID 的标签element = soup.find(id=target_id)if element:# 获取该标签下的 HTML 内容element_html = str(element)print(f"ID 为 {target_id} 的 HTML 内容:\n{element_html}\n")# 查找该标签下的所有 table 元素tables = element.find_all('table')if tables:for i, table in enumerate(tables):print(f"第 {i+1} 个 table 的 HTML 内容:\n{table}\n")else:print(f"ID 为 {target_id} 的标签下没有 table 元素")else:print(f"未找到 ID 为 {target_id} 的标签")
else:print(f"请求失败,状态码: {response.status_code}")

非英语字符乱码
我们可以通过通过手工指定代码的方式来解决这个问题,例如在response.status_code == 200后,通过response.encoding = 'utf-8'指定代码,又或通过soup = BeautifulSoup(html_content, 'html.parser', from_encoding='utf-8') 来指定编码。

然而,当我们获取的html页面编码不确定的时候,有没有更好的办法让编码监测自动执行呢?这时候chardet编码监测库是一个很好的帮手。

使用 chardet 库自动检测编码

chardet 是一个用于自动检测字符编码的库,可以更准确地检测响应的编码。

安装chardet

pip install chardet

代码应用示例

import requests
from bs4 import BeautifulSoup
import chardet# 目标 URL
url = 'https://finance.sina.com.cn/realstock/company/sh600050/nc.shtml'# 发送 HTTP GET 请求
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 自动检测字符编码detected_encoding = chardet.detect(response.content)['encoding']# 设置响应的编码response.encoding = detected_encoding# 获取网页内容html_content = response.text# 使用 BeautifulSoup 解析 HTML 内容soup = BeautifulSoup(html_content, 'html.parser')# 要查找的 IDtarget_id = 'hqDetails'# 查找具有特定 ID 的标签element = soup.find(id=target_id)if element:# 获取该标签下的 HTML 内容element_html = str(element)print(f"ID 为 {target_id} 的 HTML 内容:\n{element_html}\n")# 查找该标签下的所有 table 元素tables = element.find_all('table')if tables:for i, table in enumerate(tables):print(f"第 {i+1} 个 table 的 HTML 内容:\n{table}\n")else:print(f"ID 为 {target_id} 的标签下没有 table 元素")else:print(f"未找到 ID 为 {target_id} 的标签")
else:print(f"请求失败,状态码: {response.status_code}")

解决了中文乱码问题
可见,通过使用chardet库,可以有效实现代码的自动检测。

http://www.dt0577.cn/news/36255.html

相关文章:

  • 全网营销系统是不是传销如何优化企业网站
  • 网站百度排名优化智慧软文网站
  • 教育网站制作视频福州seo优化
  • 郑州 做网站衡阳百度推广
  • 网站区域名是什么网络营销在哪里学比较靠谱
  • 未来做哪个网站致富免费做网站推广的软件
  • 贵阳网站建设贵阳网站建设哪家好推广方案流程
  • java可以做企业网站吗网站优化和网站推广
  • 淘宝网站是什么语言做的一站式媒体发稿平台
  • 网站建设学的课程站长工具友链检测
  • 网站怎么做免费推广方案hyein seo
  • 南京网站制作电话学市场营销后悔死了
  • wordpress导出全站链接会计培训机构
  • 电子商务主要是干什么的seo专家是什么意思
  • 为政府做网站的公司凡科建站官网入口
  • 响应式网站科技seo排名软件怎么做
  • 做电影网站的图片素材情感营销案例
  • 代理浏览网站域名注册信息查询
  • 上海新闻网今日头条seo关键词排名点击工具
  • 网站国际化建设方案宁波seo推广外包公司
  • wordpress自定义404如何提高网站seo排名
  • 静态网站建设平台百度搜索数据查询
  • 新手做的网站免费crm系统手机版
  • 公司网站虚假宣传但网站不是我做的指数基金怎么买才赚钱
  • 两新支部网站建设网络营销平台名词解释
  • 驻马店专业做网站公司深圳做网站的公司
  • django做待办事项网站云南今日头条新闻
  • 网站怎么做404seo在线短视频发布页
  • 网站制作难度关键词自助优化
  • 宝安网站设计公司2023年12月疫情又开始了吗