需要使用的库

  • requests
  • re

1、打开网址“ http://www.17k.com/list/2726194.html ”查看章节目录

按F12查看如下:

经过分析,我们可以通过简单的正则表达式,提取出每一章的章节名称(源代码第34行)

1 pat = r"(第.+章.+)</h1>"

2、接下来打开第一章通过源代码再次分析

再次通过简单的分析,我们可以可以用简单的正则表达式提取出小说内容(源代码45~47行)

3、源代码如下

 1 import requests
 2 import re
 3
 4
 5 class Novel(object):
 6     url_list = []
 7     chapter_list = []
 8     chapter_title_list = []
 9
10
11     def __init__(self, url):
12         self.url = url
13
14     def obtain_url(self):
15         response = requests.get(self.url)
16         response.encoding = "utf-8"
17         pat = r"/chapter/2726194/(\d+)\.html"
18         ls = []
19         ls2 = []
20         for i in re.findall(pat, response.text):
21             ls.append(i)
22         for i in range(1, 141):
23             ls2.append(ls[i])
24         for i in ls2:
25             new_url = "http://www.17k.com/chapter/2726194/" + i + ".html"
26             Novel.url_list.append(new_url)
27
28
29
30     def obtan_title(self):
31         for i in self.url_list:
32             response = requests.get(i)
33             response.encoding = "utf-8"
34             pat = r"(第.+章.+)</h1>"
35             title = re.findall(pat,response.text)
36             self.chapter_title_list.append(str(title))
37
38
39
40     def grab_url(self):
41         for i in self.url_list:
42             response = requests.get(i)
43             response.encoding = "utf-8"
44             lst = ''
45             pat = r"  (.+)<br /><br />"
46             new_text = str(re.findall(pat, response.text))[1:-1]
47             pat2 = r"[^<br /><br />  ]"
48             for j in re.findall(pat2, new_text):
49                 if j == "。":
50                     j = "\n"
51                 lst = lst + j
52             self.chapter_list.append(lst)
53
54
55     def storage(self):
56         with open("F:\\重生.txt", "a") as f:
57             i = 0
58             while i < 140:
59                 f.write(str("\n" + self.chapter_title_list[i]) + "\n")
60                 f.write(self.chapter_list[i])
61                 i += 1
62
63
64     # 主方法
65     def grab(self):
66         # 获取网址
67         self.obtain_url()
68
69         #章节标题
70         self.obtan_title()
71
72         #章节内容
73         self.grab_url()
74
75         #存储
76         self.storage()
77
78 if __name__ == '__main__':
79     try:
80         spider = Novel("http://www.17k.com/list/2726194.html")
81         spider.grab()
82     except :
83         print("爬取出错~~")

运行后会在F盘生成一个 "重生.txt" 的文件

转载于:https://www.cnblogs.com/diyi/p/9392467.html

爬取小说《重生之狂暴火法》 1~140章相关推荐

  1. Python基础之爬取小说

    近些年里,网络小说盛行,但是小说网站为了增加收益,在小说中增加了很多广告弹窗,令人烦不胜烦,那如何安静观看小说而不看广告呢?答案就是爬虫.本文主要以一个简单的小例子,简述如何通过爬虫来爬取小说,仅供学 ...

  2. 爬取小说2--协程间通信Python

    通过Python进行协程间通信,大大加速爬取效率. 前言 是这样的,在之前的爬虫版本中,我们通过并发技术(python协程只是并发).实现快速爬取小说的效果. 将速度提高为原来的几百倍了.但是却由于之 ...

  3. 多进程爬虫(爬取小说)Python实现

    区别于之前用多协程写的爬虫版本 多协程爬取小说 这个版本,开销会比较大.效率上也不一定有之前的高 不过,总体上还是很不错的~ 问题分析 这个版本,还有之前的版本都一样,还存在问题,就是在下载好了文件之 ...

  4. python多线程爬虫数据顺序_多线程爬取小说时如何保证章节的顺序

    前言 爬取小说时,以每一个章节为一个线程进行爬取,如果不加以控制的话,保存的时候各个章节之间的顺序会乱掉. 当然,这里说的是一本小说保存为单个txt文件,如果以每个章节为一个txt文件,自然不会存在这 ...

  5. 还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波

    爬取小说数据 效果 网页分析 网页网址分析 书内容位置分析 不同书内容位置分析 将内容存到Excel 完整代码 效果 网页分析 网页网址分析 对比我们可以发现,不同的网页只有后边的数字不一样. 得到前 ...

  6. 看小说有广告?不可能的,分分钟教你爬取小说

    爬取小说 效果 分析网页 正则表达式分析 请求头分析 完整代码 可能出现的错误 效果 分析网页 我们可以看到 小说的章节的标题与对应的链接是在<dd></dd>这个节点中的. ...

  7. python按章节分割txt_python爬虫,爬取小说

    功能:爬取并下载小说中非vip部分的内容. 对于一个有八九年书龄的老书虫而言,遇到想看的小说,却没有找到下载的窗口,每次阅读都需要网上搜索,特别是网不好的地方,是十分不方便的.因此利用python写了 ...

  8. python 爬虫爬取小说信息

    1.进入小说主页(以下示例是我在网上随便找的一片小说),获取该小说的名称.作者以及相关描述信息 2.获取该小说的所有章节列表信息(最重要的是每个章节的链接地址href) 3.根据每个章节的地址信息下载 ...

  9. java 爬虫_Java原生代码实现爬虫(爬取小说)

    Java也能做爬虫. 现在提到爬虫人第一个想到的就是python,其实使用Java编写爬虫也是很好的选择,Java成熟的爬虫框架很多,下面给大家展示一个使用Java基础语言编写的爬取小说的案例: 实现 ...

  10. python 小说爬虫_Python实现的爬取小说爬虫功能示例

    本文实例讲述了Python实现的爬取小说爬虫功能.分享给大家供大家参考,具体如下: 想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到txt文档中,支 ...

最新文章

  1. 关于Linux服务器磁盘空间占满问题的解决方法
  2. JSON In Code
  3. python开源项目博客_Blog_mini首页、文档和下载 - Python Flask开源博客 - OSCHINA - 中文开源技术交流社区...
  4. 自然语言系列学习之表示学习与知识获取(七)利用关系路径进行关系抽取
  5. MATLAB slider中的数值,在微信小程序中如何使用slider设置数据值
  6. 利用代码分别实现jdk动态代理和cglib动态代理_面试之动态代理
  7. 未来计算机作文700字,未来的科技作文700字
  8. postgresql9.5.9相关的日志文件介绍
  9. AngularJs 隔离作用域
  10. Oracle数据库多语言文字存储解决方案
  11. imageview显示服务器图片,imageview 直接加载图片流
  12. 湖北一公司发生闪爆事故,这套化工厂巡检系统你有吗?
  13. 26 27 28 副词
  14. error LNK1120: 1 个无法解析的外部命令。
  15. Dubbo 正式支持 Spring 6 Spring Boot 3
  16. 【MindMapper2008】选中文字自动生成节点
  17. 项目管理工具之apizza
  18. SAP中利用价格条件有效期条件重叠实现修改价格条件单位的需求实例分析测试
  19. Oledcomm——全球5G/LiFi技术领航者
  20. Ardiuno云门禁

热门文章

  1. qt自定义控件_Qt编写自定义控件60-声音波形图
  2. linux tcp前景,linux – 为什么在Xen下TCP接受()性能如此糟糕?
  3. java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码
  4. 并行程序设计导论_C程序设计导论
  5. python冒泡循环示例_Python for循环示例
  6. python 处理异常_Python异常处理– Python尝试除外
  7. RxJava操作符serialize 笔记-二十六
  8. Asciidoctor Maven插件使用
  9. Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value:
  10. Jquery事件委托之Safari