爬虫爬取小说的编码问题解决

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

简单来说一下,本文是使用了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 + '爬取完成')

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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值