1.代码:

  1. # -*- coding:UTF- -*-
  2. from bs4 import BeautifulSoup
  3. import requests, sys
  4.  
  5. """
  6. 类说明:下载文字
  7. Parameters:

  8. Returns:

  9. Modify:
  10. --
  11. """
  12.  
  13. class downloader(object):
  14.  
  15. def __init__(self):
  16. self.server = 'http://www.biqukan.com/'
  17. self.target = 'http://www.biqukan.com/1_1094/'
  18. self.names = [] # 存放章节名
  19. self.urls = [] # 存放章节链接
  20. self.nums = # 章节数
  21.  
  22. """
  23. 函数说明:获取下载链接
  24. Parameters:

  25. Returns:

  26. Modify:
  27. --
  28. """
  29.  
  30. def get_download_url(self):
  31. req = requests.get(url=self.target)
  32. html = req.text
  33. div_bf = BeautifulSoup(html)
  34. div = div_bf.find_all('div', class_='listmain')
  35. a_bf = BeautifulSoup(str(div[]))
  36. a = a_bf.find_all('a')
  37. self.nums = len(a[:]) # 剔除不必要的章节,并统计章节数
  38. for each in a[:]:
  39. self.names.append(each.string)
  40. self.urls.append(self.server + each.get('href'))
  41.  
  42. """
  43. 函数说明:获取章节内容
  44. Parameters:
  45. target - 下载连接(string)
  46. Returns:
  47. texts - 章节内容(string)
  48. Modify:
  49. --
  50. """
  51.  
  52. def get_contents(self, target):
  53. req = requests.get(url=target)
  54. html = req.text
  55. bf = BeautifulSoup(html)
  56. texts = bf.find_all('div', class_='showtxt')
  57. texts = texts[].text.replace('\xa0' * , '\n\n')
  58. return texts
  59.  
  60. """
  61. 函数说明:将爬取的文章内容写入文件
  62. Parameters:
  63. name - 章节名称(string)
  64. path - 当前路径下,小说保存名称(string)
  65. text - 章节内容(string)
  66. Returns:

  67. Modify:
  68. --
  69. """
  70.  
  71. def writer(self, name, path, text):
  72. write_flag = True
  73. with open(path, 'a', encoding='utf-8') as f:
  74. f.write(name + '\n')
  75. f.writelines(text)
  76. f.write('\n\n')
  77.  
  78. if __name__ == "__main__":
  79. dl = downloader()
  80. dl.get_download_url()
  81. print('《一年永恒》开始下载:')
  82. for i in range(dl.nums):
  83. dl.writer(dl.names[i], '一念永恒.txt', dl.get_contents(dl.urls[i]))
  84. sys.stdout.write(" 已下载:%.3f%%" % float(i / dl.nums) + '\r')
  85. sys.stdout.flush()
  86. print('《一年永恒》下载完成')

爬取小说 spider的更多相关文章

  1. Scrapy爬取小说简单逻辑

    Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...

  2. Python实战项目网络爬虫 之 爬取小说吧小说正文

    本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...

  3. python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)

    转载出处:药少敏   ,感谢原作者清晰的讲解思路! 下述代码是我通过自己互联网搜索和拜读完此篇文章之后写出的具有同样效果的爬虫代码: from bs4 import BeautifulSoup imp ...

  4. python之爬取小说

    继上一篇爬取小说一念之间的第一章,这里将进一步展示如何爬取整篇小说 # -*- coding: utf- -*- import urllib.request import bs4 import re ...

  5. 用Python爬取小说《一念永恒》

    我们首先选定从笔趣看网站爬取这本小说. 然后开始分析网页构造,这些与以前的分析过程大同小异,就不再多叙述了,只需要找到几个关键的标签和user-agent基本上就可以了. 那么下面,我们直接来看代码. ...

  6. python3下BeautifulSoup练习一(爬取小说)

    上次写博客还是两个月以前的事,今天闲来无事,决定把以前刚接触python爬虫时的一个想法付诸行动:就是从网站上爬取小说,这样可以省下好多流量(^_^). 因为只是闲暇之余写的,还望各位看官海涵:不足之 ...

  7. Golang 简单爬虫实现,爬取小说

    为什么要使用Go写爬虫呢? 对于我而言,这仅仅是练习Golang的一种方式. 所以,我没有使用爬虫框架,虽然其很高效. 为什么我要写这篇文章? 将我在写爬虫时找到资料做一个总结,希望对于想使用Gola ...

  8. Python3爬取小说并保存到文件

    问题 python课上,老师给同学们布置了一个问题,因为这节课上学的是正则表达式,所以要求利用python爬取小说网的任意小说并保存到文件. 我选的网站的URL是'https://www.biquka ...

  9. scrapy框架爬取小说信息

    1.爬取目标网站:http://www.zhaoxiaoshuo.com/all.php?c=0&o=0&s=0&f=2&l=0&page=1 2.爬取目标网站 ...

随机推荐

  1. 洛谷P4064 加法 [JXOI2017] 贪心

    正解:贪心 解题报告: 传送门! 首先最小值最大显然考虑二分?然后就二分一个值mid,从左往右考虑,对于小于等于mid的点显然可以求出这个点至少要加几次,然后找到覆盖这个点的右端点max的区间区间加上 ...

  2. javascript替代Array.prototype.some操作

    Array.prototype.some在低版本浏览器好像不太兼容,下列是替代方法 一. for 循环 const initIds: any[] = [1,2,3]; const Ids: any[] ...

  3. springmvc拦截器实现用户登录权限验证

    实现用户登录权限验证 先看一下我的项目的目录,我是在intellij idea 上开发的 1.先创建一个User类 package cn.lzc.po; public class User { pri ...

  4. (4.25)格式化T-SQL工具

    写代码的一个重要方面是格式化.没有人喜欢格式错误的代码.对于继承它的人,甚至是作者,他/她在一周左右后检查它是很难理解/维护的 我确实理解开发人员在严格的交付准则下工作,没有人会想要延迟交付,而不是格 ...

  5. shell 命令 set命令

    set命令输出所有的变量,包括全局变量和局部变量: set-o命令显示bash Shell的所有参数配置信息 set -o nounset              -u                ...

  6. PixelRatio使用

    export default class PixelRatioView extends Component { render() { return ( <View style={styles.c ...

  7. 微信小程序使用阿里图标-iconfont

    步骤一:下载项目图标 步骤二:解压文件,重命名 iconfont.css为 iconfont.wxss ,并复制 到项目 static文件夹 icon文件夹下                     ...

  8. 实例讲解TP5中关联模型

    https://blog.csdn.net/github_37512301/article/details/75675054 一.关联模型在关系型数据库中,表之间有一对一.一对多.多对多的关系.在 T ...

  9. [js]顶部导航和内容区布局

    自己实现顶部导航布局--内容显示 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  10. git的reset的理解

    git的reset的理解 1.在理解reset命令之前,先对git中涉及到的与该reset命令相关概念进行说明和解释HEAD这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交Indexind ...