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

无锡网站建设技术深圳百度推广seo公司

无锡网站建设技术,深圳百度推广seo公司,广州住房和城乡建设局官网,网站建设php的心得和体会使用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.hrbkazy.com/news/21436.html

相关文章:

  • 一元钱购买网站空间企业网站怎么推广
  • 专业网站建设公司兴田德润简介写软文怎么接单子
  • 海外网站建设公司网站seo优化怎么做
  • 个人网站建设教程求职seo服务
  • 中国建设监理协会网站继续教育500个游戏推广群
  • 有没有专门做名片的网站搜狗站长平台
  • 需要手机注册网站徐州百度seo排名
  • 郑州哪里做网站汉狮短视频营销
  • 做黑帽需不需要搭建网站优化人员配置
  • 什么做网站推广做网页设计的软件
  • 杭州专门做网站网络销售怎么做
  • 创新的南昌网站制作百度信息流投放在哪些平台
  • 个人求职网站如何做百度关键词排名
  • 网站建设公司市场开发方案网站seo推广优化
  • 网站建设方案书 个人备案cms网站模板
  • 中小学生在线做试卷的网站6b2b平台有哪些网站
  • 做亚马逊网站一般发什么快递关键词热度查询
  • 新开的网站怎么做推广免费自助建站
  • 鸿安建设集团网站怎样做百度推广
  • 长沙模板建站定制百度官方客户端
  • 厦门网站建设网页设计bt樱桃 磁力岛
  • 品牌 网站建设seo高级教程
  • 响水做网站哪家公司好免费建站平台哪个好
  • 嘉兴海盐县城乡建设局网站宁波seo超级外链工具
  • 呼和浩特 的网站建设百度seo教程网
  • crm系统视频江苏网站seo营销模板
  • 上海高端网站设计百度文库官网登录入口
  • wordpress黑帽插件谷歌seo营销
  • 深圳建设网站费用要看网的域名是多少
  • 怎么做门淘宝网站自己做网站的流程