欢迎有大佬指点优化。

import requests
from pyquery import PyQuery as pq
import json
import sysdef load(name):# 获取起点的搜索页面url_select = 'https://www.qidian.com/search?kw=' + nameresponse_select = requests.get(url_select).content.decode('utf8')doc_select = pq(response_select)# clear 加了items变成了生成器,clear_select = doc_select('.book-mid-info h4 a').items()# 获取书id,使用next进行迭代,由于只取第一个数据,所以不用fordata_eid = next(clear_select).attr('data-bid')# print(data_eid)# 获取章节目录url_catalog = 'https://book.qidian.com/ajax/book/category?_csrfToken' \'=KxOyODbbsZHWGtIfUsnDEqI9teZBDuUDC4QJ5YsZ&bookId=' + data_eidresponse_catalog = requests.get(url_catalog).content.decode('utf8')# 返回的是json格式其中包含起点所有的章节需要的idJson = json.loads(response_catalog)# 分析Json结构date = Json["data"]vs = date["vs"]for i in vs:cs = i["cs"]  # 包含正文的url的id以及章节名称vN = i["vN"]  # 分卷名称# with open(r'D:\Users\MSI-PC\Desktop\123.txt', encoding='utf8', mode='a+') as f:#     f.write(str(cs) + '\n')if vN == '作品相关':continueelif vN == 'VIP卷':for cU in cs:only = cU["id"]  # id是vip章节url的idcN = cU["cN"]  # 章节名称list_cU = {cN: str(only)}vip(list_cU, data_eid)else:for cU in cs:only = cU["cU"]  # cU是章节url的idcN = cU["cN"]  # 章节名称list_cU = {cN: only}down(list_cU)# Cookie内容需要用自己账号登陆后产生的
headers = {'Cookie': '''User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KH''TML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}# 已经订阅的VIP章节
def vip(ID_url, data_eid):# key是章节名称,value章节idfor key, value in ID_url.items():# 组合完成的每一章节的urlurls = f'https://vipreader.qidian.com/chapter/{data_eid}/{value}'response = requests.get(urls, headers=headers).content.decode('utf8')text = pq(response)# 使用PyQuery 筛选正文内容text_w = text(".read-content.j_readContent p")# 写入标题with open(r'D:\Users\MSI-PC\Desktop\123.txt', encoding='utf8', mode='a+') as f:f.write(str(key) + '\n')# 由于起点是每句一个<p></p>加属性 i获得是属性,需要加text方法获得内容# 之所以不整个列表打印,是因为好看=-=所以和页面同步,逐段打印for i in text_w:# 为了减少不必要的运行,一般未订阅的VIP章节,只能看三行,字数必然小于1000就直接停止程序if len(text_w.text()) > 1500:with open(r'D:\Users\MSI-PC\Desktop\123.txt', encoding='utf8', mode='a+') as f:f.write(str(i.text) + '\n')else:with open(r'D:\Users\MSI-PC\Desktop\123.txt', encoding='utf8', mode='a+') as f:f.write('对不起,未订阅' + '\n')sys.exit()# 免费章节
def down(ID_url):# key是章节名称,value章节idfor key, value in ID_url.items():# 组合完成的每一章节的urlurls = 'https://read.qidian.com/chapter/' + valueresponse = requests.get(urls).content.decode('utf8')text = pq(response)# 使用PyQuery 筛选正文内容text_w = text(".read-content.j_readContent p")# 写入标题with open(r'D:\Users\MSI-PC\Desktop\123.txt', encoding='utf8', mode='a+') as f:f.write(str(key) + '\n')# 由于起点是每句一个<p></p>加属性 i获得是属性,需要加text方法获得内容for i in text_w:with open(r'D:\Users\MSI-PC\Desktop\123.txt', encoding='utf8', mode='a+') as f:f.write(str(i.text) + '\n')if __name__ == '__main__':namebook = input('请输入小说名称: ')load(namebook)

学习日志,更新起点爬虫,下载已经付费订阅vip的章节相关推荐

  1. Z01 - 003、阶段Ⅰ:爬虫开发小案例Ⅰ - 起点爬虫

    0.本章学习目录大纲 - 起点爬虫 初学耗时:1h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 一.需求:爬取起点中文网中的一本小说内容   1.1  创建包名.类名. ...

  2. python爬虫实训日志_Python学习学习日志——爬虫《第一篇》(BeautifulSoup)

    爬虫简介(学习日志第一篇) 一.爬虫介绍 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Pyyhon爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.U ...

  3. 一篇文章教会你使用Python网络爬虫下载酷狗音乐

    [一.项目背景] 现在的听歌软件动不动就是各种付费,要下载软件才能听,当你下载了之后,你会惊奇的发现这首歌还收费,这就让一向喜欢白嫖的小编感到很伤心了.于是,小编冥思苦想,终于让我发现了其中的奥秘,一 ...

  4. Python学习日志12 - 办公自动化

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 前言 进入正题 Python学习日志12课 - 办公自动 ...

  5. deepin更新失败_深度操作系统deepin 20更新:深度下载器和浏览器

    原标题:深度操作系统deepin 20更新:深度下载器和浏览器 深度操作系统20 1003更新发布11031.106(build),新增备份还原.深度下载器.深度浏览器,针对桌面环境.应用软件等进行2 ...

  6. Golang学习日志 ━━ LiteIDE的主要配置

    用LiteIDE开发golang半年换到VSCode,vs用了一年多后,最近又用回LiteIDE,感觉还是针对性强的IDE用起来舒适,界面什么不重要. 我个人一般什么东西都喜欢用默认配置,能不改的就不 ...

  7. 从零开始学习Python在e站上下载蕾姆的本子

    从零开始学习Python在e站上下载蕾姆的本子 郑重说明: 1. 本文仅仅只是Python技术应用的实践和探讨,本人绝不提供和传递任何违背国家相关法律的视频.音频及图像资料. 2. 本人也是刚刚开始接 ...

  8. 安卓学习日志 Day11 — JSON 解析

    文章目录 概述 USGS 网站 导入项目 JSON JSON 处理 Unix 时间 位置信息拆分 震级信息 震级显示一位小数 震级的圆圈背景 改进界面 添加地震Intent 总结 参考 概述 我们将设 ...

  9. 微信小程序学习日志(一)

    微信小程序学习日志之工具配置及创建简单页面 1.任务与分工 在这次点餐系统项目中,我和我所在的小程序组的共三个成员主要负责小程序前端的实现.我们针对菜单,点菜清单(结算页面)以及评论三个主要页面进行了 ...

最新文章

  1. 从源码分析DEARGUI之文件选择
  2. oracle学习第一天
  3. 360 补天平台,也没个什么人啊。。。
  4. 《Go 语言编程之旅》送煎架和站长写的书
  5. 定义一个空切片_Python进阶:全面解读高级特性之切片
  6. Ubuntu16.04下制作deb包的方法详解
  7. python time库_python中time库的实例使用方法
  8. 全国大学生数学建模竞赛首战一等奖经验分享
  9. 通过js操作jwplayer来播放暂停
  10. 华为ensp模拟校园网/企业网实例(附完整设备配置命令和ensp项目)
  11. 用Python编写斐波那契数列(Fibonacci Sequence)
  12. 读书笔记:《软件架构师应该知道的97件事》
  13. COB--COF--COG--TAB--TCP
  14. 如何由一名合格的电商运营过渡到电商运营总监角色
  15. wxpy 微信聊天机器人的实现
  16. 给手机充电时,边充边玩会爆炸?夸大其词哗众取宠
  17. 全球无缝隙天气预报产品体系
  18. 计蒜客python答案Top50
  19. oracle 创建 dplink,Oracle创建dblink
  20. 机器视觉技术原理解析及解决方案

热门文章

  1. 彩色图像与无色图像、消色差、图像的空间频率成分(chromatic information achromatic information、spatial frequency component)
  2. react使用qrcode.react生成扫描二维码
  3. Vayo-Gerber View安装教程
  4. 定义自定义字体需要css的什么规则,css3自定义字体需要什么规则 css3基本选择器...
  5. InterSystems 2022全球峰会亮点解读:Smart Data Fabric与InterSystems数据平台的超能力
  6. html滑动验证图片,js实现移动端图片滑块验证功能
  7. 宇宙最强IDE vs2019升级
  8. 6-6 快速播放音频和视频预加载
  9. Axure电商后台业务管理系统原型模板+app电商原型交互+移动端电商通用PRD文档+全局交互用例说明+Axure高保真电商社交prd文档+电商prd+电商需求文档+订单、购物车、配货、物流、仓储
  10. Hive下查看表占用空间大小的方法