当前位置:   article > 正文

爬虫爬取小说的编码问题解决_用爬虫爬收费小说会是乱码吗

用爬虫爬收费小说会是乱码吗

今天来说下昨天有人反映部分网站的编码问题。

简单来说一下,本文是使用了chrome浏览器的xpath插件,比正则表达式简单。需要的联系本人。
本文爬取的小说编码格式为ISO8859-1,所以要进行转码。
utf-8编码可以用gbk和iso8859-1解码后编回去
gbk编码后只能用iso8859-1解码后编回去。
由于拿到的数据需要放在list里循环遍历,所以在遍历之后需要将对象强制转换为str,才能把编码转换为gbk,最后在存文件的时候以utf-8存入。

from lxml import etree
import requests
import os
import time

#设置要爬取的url地址
url = '写上你要爬取的网站'
#设置头部信息
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
           ' Chrome/76.0.3809.87 Safari/537.36'}
#请求页面数据
repson = requests.get(url,headers=headers)
#获取html页面
wenben_text = repson.text
#把获取的页面放到xpath里面,用来调用xpath方法
etrees = etree.HTML(wenben_text)
#获取每一章的路由
wenben_list = etrees.xpath('xpath匹配标签内容')
file_xpath = "设置存放文件的路径"
if not os.path.exists(file_xpath):
    os.mkdir(file_xpath)

#获取页面具体内容
def get_content(url):
    #请求页面数据
    repson = requests.get(url=url,headers=headers)
    #获取页面数据
    wenben_text = repson.text
    uft_str = wenben_text.encode("iso-8859-1").decode('gbk')
    etrees = etree.HTML(uft_str)
    #小说内容
    content = etrees.xpath('xpath匹配标签内容')
    content = ''.join(content)

    return content

n=0
for i in wenben_list:
    n+=1
    #标题
    title = i.xpath('xpath匹配标签内容')[n]
    #内容
    nr_url = i.xpath('xpath匹配标签内容')[n]
    #这里必须强制转换title为str,因为list不能转换编码
    en = str(title)
    #这里将编码转换为gbk,最后存文件的时候再以utf-8存入就可以。
    uft8_str = en.encode("iso-8859-1").decode('gbk')
    content = get_content(nr_url)
    print(uft8_str+'开始爬取')
    with open(file_xpath + uft8_str  + ".txt", 'w',encoding='utf-8') as f:
        f.write(uft8_str+'\n\n\n'+content)

    print(uft8_str + '爬取完成')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

以下为转换编码之后爬取成功的文件。注意:如果不转码,将会出现乱码的情况。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/573245
推荐阅读
相关标签
  

闽ICP备14008679号