自学爬虫第三天,番茄小说(文字加密)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

                        文章目录

前言

一、什么是文字加密?

二、步骤

1.引入库

2.构建请求头

3.构建url列表以及章节目录列表

​编辑

3.先对第一章进行分析,看看内容是否正确

 4.构建完整的爬虫

总结


前言

        学习爬虫的时候,会遇到各种各样的加密,对于番茄来说,它的加密主要体现在文字上,也是平常所说的文字加密。

一、什么是文字加密?

        文字加密是网站的一种常用的反爬手段,会让提取的内容不能正确的显示出来。

二、步骤

1.引入库

import requests
import parsel

2.构建请求头

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0',
}

url = 'https://fanqienovel.com/page/7081535608648109069'

response = requests.get(url=url, headers=headers)

         在调试者界面里的network下找到静态资源并构建一个简单的请求头。这个是最简单的请求头,如果希望更安全不被检测到,可以使其更详细一点,具体构造请看前两篇请求头构造方法。

3.构建url列表以及章节目录列表

# 把text转化为可解析内容
re = parsel.Selector(response.text)
# 用CSS节点选择器找到章节名称的位置,getall()获取该节点下所有文本内容
title_list = re.css('.chapter-item .chapter-item-title::text').getall()
# 用CSS节点选择器找到子章节url的位置,getall()获取该节点下所有文本内容
url_list = re.css('.chapter-item .chapter-item-title::attr(href)').getall()
# 看看效果
for title, url in zip(title_list, url_list):
    print(title, url)

4.先对第一章进行分析,看看内容是否正确

url = 'https://fanqienovel.com/reader/7402826212915039294'
# 构建请求头
response = requests.get(url=url, headers=headers)
# 转化为解析内容
selector = parsel.Seletor(response.text)
# 获取文章内容
text = selector.css('.muye-reader-content.noselect div div p::text').getall()
# 打印章节内容
print(text)

        发现内容有乱码,我们可以通过一个字一个字输出unicode码去看一下,(也可以把列表里面内容各个元素放到一起,具体用join方法):

# 输出每个word的unicode
for line in text:
    for wd in line:
        print('word:', wd, 'unicode:', ord(wd))

  

        我们可以看到,显示不出来的文字的unicode码明显和正常显示的文字不在一个范围里,这时候我们就需要看url里面的字体文件了。

        找到woff2结尾的文件,复制url到网页搜索框中,回车下载下来。然后把下载下来的文件导入到FontCreator中,就会看到unicode码以及对应的汉字了,然后把映射关系导成一个字典,最后循环替换。

# 定义一个空字符串
novel_list = ''
# 在text列表里面循环每一句
for line in text:
    # 在每一句里面循环每一个文字
    for wd in line:
        try:
            # 如果能找到相对应的unicode码,说明这个文字是显示不正常的
            word = dit_data[str(ord(wd))]
            novel_list += word
        except:
            # 如果找不到,那就是正常显示的汉字,按照原来的汉字就可
            word = wd
            novel_list += word
    # 每一行加个换行
    novel_list += '\n'
# 看看效果
print(novel_list)

        这里显示都变正常了。

 5.构建完整的爬虫

        所有的url和标题都爬下来了,章节内容也正常了,现在需要做的就是循环去爬,然后保存就可以了。


总结

        以上就是今天要讲的内容,文字加密是的一种最简单反爬机制,只有两套编码,多的三四套也是有的,这样就更麻烦了。在保证能把内容爬下来的前提下,再去分析内容是否有问题,有问题一层一层的解决问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值