python爬虫中通用的两种乱码解决方式(自用)

这篇具有很好参考价值的文章主要介绍了python爬虫中通用的两种乱码解决方式(自用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:在python爬虫爬取的时候,我们有时会遇到诸如以下的乱码:

�װŮ�� ��Ů ˮ СϪ Ψ��
ÃÀÅ® µçÄÔ×À ¼üÅÌ »ú·¿ ¿É°® С½ã½ã4k±ÚÖ½

解决方法一:用utf-8来转码,具体在请求过程中如下

	page_text = requests.get(url=url,headers=headers)
    page_text.encoding = 'utf-8'
	# 开始正常使用
    tree = etree.HTML(page_text.text)

解决方法二:用通用的中文乱码处理方式:

		#通用中文乱码解决方案
        img_name = img_name.encode('iso-8859-1').decode('gbk')

下面给出具体的运用例子:(仅供学习交流)文章来源地址https://www.toymoban.com/news/detail-593529.html

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os.path
import requests
from lxml import etree

# from bs4 import BeautifulSoup
#需求:爬取三国演义小说所有的章节标题和章节内容http://www.shicimingju.com/book/sanguoyanyi.html
if __name__ == "__main__":
    #对首页的页面数据进行爬取
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
    }
    url = 'https://pic.netbian.com/4kdongman/'
    page_text = requests.get(url=url,headers=headers).text
    # page_text.encoding = 'utf-8'

    tree = etree.HTML(page_text)
    li_list = tree.xpath('//*[@id="main"]/div[3]/ul/li')

    if not os.path.exists('./picLibs'):
        os.mkdir('./picLibs')

    for li in li_list:
        img_src = 'https://pic.netbian.com/' + li.xpath('./a/img/@src')[0]
        img_name = li.xpath('./a/img/@alt')[0] + '.jpg'
        #通用中文乱码解决方案
        img_name = img_name.encode('iso-8859-1').decode('gbk')
        img_data = requests.get(url=img_src,headers=headers).content
        img_path = 'picLibs/' + img_name
        with open(img_path,'wb') as fp:
            fp.write(img_data)
            print(img_name,"下载成功!!")




到了这里,关于python爬虫中通用的两种乱码解决方式(自用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA 打包MapReduce程序到集群运行的两种方式以及XShell和Xftp过期的解决

    【MapReduce打包成jar上传到集群运行】http://t.csdn.cn/2gK1d 【Xshell7/Xftp7 解决强制更新问题】http://t.csdn.cn/rxiBG 这里的打包是打包整个项目,后期等学会怎么打包单个指定的mapreduce程序再来更新博客。 注意: 这个时候已经在 target 目录下打包好了一个jar包: 我们可以直接使用这个

    2024年02月07日
    浏览(42)
  • 用Python获取弹幕的两种方式(一种简单但量少,另一量大管饱)

    弹幕可以给观众一种“实时互动”的错觉,虽然不同弹幕的发送时间有所区别,但是其只会在视频中特定的一个时间点出现,因此在相同时刻发送的弹幕基本上也具有相同的主题,在参与评论时就会有与其他观众同时评论的错觉。 在国内的视频网站里,弹幕先是从A站被大家

    2023年04月27日
    浏览(36)
  • 一篇文章彻底搞懂Python字符编码方式(中文编码,UTF-8,unicode,gb,gbk,中文乱码,爬虫中文乱码)

    目录 前言 一、字符编码方式的来龙去脉。 1.字符集的含义。 2.编码方式演化过程 1.ASCII 2.GB2312、GBK 3.Unicode 4.UTF-8 二、Python的字符编码及相关操作 1.window系统的字符编码 2.Python的字符编码 1.Python中str与bytes的区别和联系 2.Python encode()方法【对str进行编码】 3.Python decode()方法【对

    2024年01月17日
    浏览(56)
  • 封装axios的两种方式

    作为前端工程师,经常需要对axios进行封装以满足复用的目的。在不同的前端项目中使用相同的axios封装有利于保持一致性,有利于数据之间的传递和处理。本文提供两种对axios进行封装的思路。 首先导入了 axios, AxiosInstance和AxiosResponse模块 ,用于创建一个http请求的实例和处理

    2024年02月08日
    浏览(41)
  • Containerd的两种安装方式

    1. 轻量级容器管理工具 Containerd 2. Containerd的两种安装方式 3. Containerd容器镜像管理 4. Containerd数据持久化和网络管理 操作系统环境为centos7u6 1.1 获取YUM源 1.2 使用yum命令安装 1.3 验证安装及启动服务 1.4 验证可用性 Containerd有两种安装包: 第一种是 containerd-xxx ,这种包用于单机测

    2024年02月14日
    浏览(39)
  • ssh的两种登录方式

    1. 密码登录 这是默认的一种登录方式,如图: 输入密码以后成功登录shell: 以后每次登录都得输入密码,比较麻烦。 2. 公钥登录 为了方便,ssh还提供了使用公钥的登录方式,原理为在client生成一对公私钥,client保留私钥,把公钥写入server。具体方式如下: 一、 在client: 生

    2024年02月16日
    浏览(43)
  • python中——requests爬虫【中文乱码】的3种解决方法

    requests是一个较为简单易用的HTTP请求库,是python中编写爬虫程序最基础常用的一个库。 而【中文乱码】问题,是最常遇到的问题,对于初学者来说,是很困恼的。 本文将详细说明,python中使用requests库编写爬虫程序时,出现【中文乱码】的原因,及常见3种解决办法。 首先,

    2024年02月12日
    浏览(47)
  • 快速获取cookie的两种方式

    在需要获取Cookie的谷歌浏览器界面,按Ctrl+Shift+j打开js控制台。 输入 console.log(document.cookie) 回车打印Cookies 新建书签,书签名称随意,书签的网址是以下网址: 在需要获取Cookie的页面,点击这个小书签,就直接复制好了Cookie了。 以上两种方式是自用实测比较方便高效的,在此

    2024年02月11日
    浏览(54)
  • QT打包的两种方式

    QT打包的两种方式: 一个是QT5自带的windeployqt(不需要下载安装),它可以找到程序(exe)用到的所有库文件,并且都拷贝到exe程序的当前文件。此时打包的exe较小,需要和拷贝进来的文件放一起运行,也可以将这些文件再次打包成一个大的exe文件,此时用的第二种打包方式

    2024年02月16日
    浏览(45)
  • sqlmap的两种挂代理方式

    文章目录 前言 一、第一种方式直接挂代理 二、第二种方式间接挂代理 为什么要挂代理呢: sqlmap原理和暴力破解类似如果速度过快则会很容易被封ip,所以挂代理是避免这种情况的发生,即使发生也可以切换其他ip。 一、第一种方式直接挂代理  可在-u之后直接输入--proxy 

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包