您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 0浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

使用Python开发小说下载器,不再为下载小说而发愁

嗨学编程 发布时间:2019-09-25 19:38:50 ,浏览量:0

需求分析

免费的小说网比较多,我常看的是笔趣阁。这个网站基本收费的章节刚更新,它就能同步更新,简直不要太叼。既然要批量下载小说,肯定要分析这个网站了… 在这里插入图片描述 在搜索栏输入地址后,发送post请求获取数据,然后根据url解析,模拟操作即可。打开Fiddler,chrome搜索一下伏天氏,然后看看抓取到的日志流: 在这里插入图片描述

代码实现

在我们开始编码前,先得看下parameters中的这几个参数。 searchkey是什么鬼? 这是因为在因特网上传送URL,只能采用ASCII字符集。所以当传输中文时,有些网站会将中文进行编码后传输,再通过后台解码。那在python中该怎么做呢:

from urllib.parse import quote
quote('伏天氏')
'%E4%BC%8F%E5%A4%A9%E6%B0%8F'
# 为什么和Fiddler显示字符串不一样?
# 因为这个网站使用的gbk编码...
# 按照下面这样操作即可
quote('伏天氏',encoding='gbk')
'%B7%FC%CC%EC%CA%CF'

ct又是什么鬼? 我不知道,开始以为是临时参数,但试了好几次都是一样的,最后算了下: 102410242 = 2091752 …应该是网站那里需要进行限制的吧…

剩下的两个参数照着写就行了,先来一段代码测试下:

import requests
from urllib.parse import quote
'''
更多Python学习资料以及源码教程资料,可以加群821460695 免费获取
'''
session = requests.session()

headers = {"User-Agent": ("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
                          "(KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36")
           }
url = ('http://www.biquge.cm/modules/article/sou.php?'
       'searchkey=%s&ct=2097152&si=biquge.cm&sts=biquge.cm') % quote("伏天氏", encoding='gbk')
result = session.post(url, headers=headers)
result.encoding = 'gbk'
print(result.text)

在这里插入图片描述 查看下结果,一切ok。标红这个id='list’是因为,当找不到小说的时候,就定位不到这个元素了。所以可以用来判断返回结果。解析url,然后获取所有的a标签text以及href和首页进行拼接,就可以实现跳转至每章内容了… 那么要使用requests+beautifulsoup进行二连击?No…上周五咱们说了requests_html这个模块,接着复习下呗…代码片段说明下:

from urllib.parse import  urljoin
# 根据url获取所有章节标签
response = self.post_method(post_url)
novel_data = response.html.find('#list a')
for chapter in novel_data :
    chapter_name = chapter.text
    chapter_url = urljoin(self.URL, chapter.attrs['href'])

这里注意下,url的拼接,如果你很闲可以自己写,如果你懒,直接使用urljoin即可。 每章内容的定位比较简单,就不再赘述了。

人性化下载

要想产品做得好,首先需要在需求分析的时候有亲身的体验与调研。 作为多年书虫,对于书友们太了解了,很多人看小说都会有养书的习惯,攒上个几十章,然后一次看个够。 完了再换其他的小说接着看,等攒够了再来刷。 按照咱么这样每次去通篇下载,不仅浪费时间也太不人性化了… 所以,增加了如下方式: 在这里插入图片描述 看到这些参数大家因该知道了,没错,使用列表切片进行动态下载!

关注
打赏
1663681728
查看更多评论
立即登录/注册

微信扫码登录

0.2783s