周末闲来无事,本来想看一看书的,结果也没看进去(RNG输的我真是糟心。。。)

于是就用python写了一个爬虫,来爬取小说来看,防止下次还要去网上找书看。

我们先找一个看名著的小说网

我们打开http://www.mingzhuxiaoshuo.com/ 名著小说网来,首先看到的是这样的

我们如上图选一个大家耳熟能详的书,《富爸爸穷爸爸》,我们点开来,点击在线阅读

出现了这本书的目录,http://www.mingzhuxiaoshuo.com/waiguo/154/,这个url是我们首先爬取的网页,我们先将每一章节的url爬取出来。

我们打谷歌的开发工具 F12,去找本网站的目录规律

我们发现每一个目录都有一个href,我们点开了一章,查看他的url,发现是这样的,如下图http://www.mingzhuxiaoshuo.com/waiguo/154/4857.Html。

我们结合上面的一系列目录,寻找规律。可以确认的每一章的url = www.mingzhuxiaoshuo.com + 目录的href

我们于是可以开始写代码了

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests
"""
说明:下载《穷爸爸富爸爸》
Modify:2018-10-20,星期六
Author:ligz
"""
if __name__ == '__main__':server_url = 'http://www.mingzhuxiaoshuo.com'target_url = 'http://www.mingzhuxiaoshuo.com/waiguo/154/'req = requests.get(url = target_url)html = req.text.encode("latin1").decode("gbk")bf = BeautifulSoup(html,'lxml')texts = bf.find_all('div', 'list')bf_a = BeautifulSoup(str(texts),'lxml')a = bf_a.find_all('a')for i in a:print(i.string, server_url+i.get('href'))

我们运行代码可以看到,打印出来的是每一章节的目录名字和对应的url。

这里用的是

requests去获取网页的内容,和BeautifulSoup去对网页的html提取数据

我们用requests.get(http://www.mingzhuxiaoshuo.com/waiguo/154/)请求小说目录网页的html

用BeautifulSoup去寻找了名字是  list  的div。

texts = bf.find_all('div', 'list')

去找 这个div下面的a标签

a = bf_a.find_all('a')

我们已经成功了一半了,另一半当然是重头戏——爬取每一章节的内容

我们点开序言http://www.mingzhuxiaoshuo.com/waiguo/154/4857.Html,打开F12开发者工具,看到的html结构如下

我们发现我们需要的内容在class="width"的div下,于是我们学习上面的写法,给大家演示一下。

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests
"""
说明:下载《穷爸爸富爸爸》
Modify:2018-10-20,星期六
Author:ligz
"""
if __name__ == '__main__':target = 'http://www.mingzhuxiaoshuo.com/waiguo/154/4857.Html'req = requests.get(url = target)html = req.text.encode("latin1").decode("gbk")bf = BeautifulSoup(html,'lxml')texts = bf.find_all('div', 'width')bf_div = BeautifulSoup(str(texts),'lxml')div = bf_div.find_all('div')txt = ''for i in div:if i.string is not None:txt = txt + i.string +'\n\n'print(txt)

我们用BeautifulSoup寻找到上面class="width"的div,

texts = bf.find_all('div', 'width')

再讲他作为一个html结构,再去寻找下面每一个div

div = bf_div.find_all('div')

运行程序,我们于是得到了整个序言的内容

我们得到了目录url和每一个url下面的内容,我们就可以完成整个爬取的工作。

下面是完整的代码,运行即可爬取成功

from bs4 import BeautifulSoup
import requests, sys"""
类说明:下载《穷爸爸富爸爸》
Modify:2018-10-20,星期六
Author:ligz
"""
class download(object):def __init__(self):self.server_url = 'http://www.mingzhuxiaoshuo.com'self.target_url = 'http://www.mingzhuxiaoshuo.com/waiguo/154/'self.names = []self.urls = []self.nums = 0"""获取下载的链接获取目录"""def download_url(self):req = requests.get(url = self.target_url)html = req.text.encode("latin1").decode("gbk")bf = BeautifulSoup(html,'lxml')texts = bf.find_all('div', 'list')bf_a = BeautifulSoup(str(texts),'lxml')a = bf_a.find_all('a')self.nums = len(a)for i in a:self.names.append(i.string)self.urls.append(self.server_url+i.get('href'))"""获取每一章节的内容"""def download_content(self,target_url):req = requests.get(url = target_url)html = req.text.encode("latin1").decode("gbk")bf = BeautifulSoup(html,'lxml')texts = bf.find_all('div', class_='width')bf_div = BeautifulSoup(str(texts),'lxml')div = bf_div.find_all('div')txt = ''for i in div:if i.string is not None:txt = txt + i.string +'\n\n'return txtdef writer(self, name, path, text):write_flag = Truewith open(path, 'a', encoding='utf-8') as f:f.write(name + '\n')f.writelines(text)f.write('\n\n')if __name__ == '__main__':dl = download()dl.download_url()print("开始下载")for i in range(dl.nums):dl.writer(dl.names[i], '穷爸爸富爸爸.txt', dl.download_content(dl.urls[i]))sys.stdout.write("已下载:%.3f%%" % float(i/dl.nums) + '\r')sys.stdout.flushprint('已下载完成')

我们看到已经成功的爬取了整本书的内容

可以放到手机上下次有时间再看了

本文可以转载,但需注明出处https://blog.csdn.net/qq_39071530/article/details/83276675

Python爬虫—爬取小说名著相关推荐

  1. python爬虫爬取小说网站并转换为语音文件

    前言 作为一个技术宅,本着为眼睛着想的角度考虑,能少看屏幕就尽量少看屏幕,可是又是一个小说迷,那就开动脑筋爬一下小说转换成语音来听书吧 第一章:爬取小说文件 把目标定在小说存储量比较大的网站:起点中文 ...

  2. python 爬虫爬取小说信息

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

  3. Python爬虫爬取小说

    近来闲的无聊,天天逛CSDN看到python多火热多火热,就自己根据教程学习爬虫,参考了好几个博文,忘了地址是啥就不贴出来了 开发工具:PcCharm 开发环境:Python3.8 这次爬取的小说网站 ...

  4. 关于python爬虫爬取小说

    写了一个下载小说的爬虫,具体代码如下: 现在就是有一个问题,如何在不打乱章节顺序的情况下提高爬取的速度呢??? from urllib.parse import quote import reques ...

  5. python 小说cms系统_「博文小说网」Python爬虫爬取小说网站 - seo实验室

    博文小说网 #!/usr/bin/env Python # -*- coding: utf-8 -*- # @Author : Woolei # @File : book136_singleproce ...

  6. python爬虫爬取《斗破苍穹》小说全文

    网络爬虫的入门学习:python爬虫爬取小说全文 python爬虫首先导入基本爬虫库requests:import requests,安装命令pip install requests,使用pychar ...

  7. Python爬虫爬取纵横中文网小说

    Python爬虫爬取纵横中文网小说 学了一周的爬虫,搞了这个东西,自己感觉还不错,有什么问题可以提一提哈 目标:纵横中文网-完本-免费小说 网址:http://book.zongheng.com/st ...

  8. python如何爬取网站所有目录_用python爬虫爬取网站的章节目录及其网址

    认识爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟 ...

  9. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

最新文章

  1. ERROR: No matching distribution found for onnxsim
  2. QEMU 网络虚拟化
  3. 指针右左法则----复杂指针解析
  4. 更改Docker默认的images存储位置
  5. SpringCloud——负载均衡
  6. 部署容器jenkins_使用Jenkins部署用于进行头盔检测的烧瓶容器
  7. json 数据 生成 图表_比Excel更美观!你可知PhotoShop也能画图表
  8. Linux下netstat命令详解
  9. EditPlus3.3 集成 SVN
  10. JAVA我的世界怎么弄TNT大陆_《我的世界》爷爷的遗言:TNT大陆地图存档
  11. python爬取京东商品信息_python爬虫:爬取京东商品信息
  12. 可以替代树莓派4(raspberry pi 4B)的tinker board 2
  13. 算法课设——逃狱的汉尼拔博士
  14. 网卡配置里NM_CONTROLLED的意思
  15. Arthas——热替换
  16. 【前端】HTML标签(下)
  17. 适用于 Flutter 的 Google 移动广告 SDK 正式版现已发布
  18. 自定义气泡效果(BubbleView)
  19. keil_5.26 MDK版,汉化
  20. Linux —— chown -R mysql:mysql ./及chown详解

热门文章

  1. 如何编写无法维护的代码
  2. oracle 磁带备份,磁带备份 - Linux下实现自动备份Oracle数据库_数据库技术_Linux公社-Linux系统门户网站...
  3. 中兴 ZTE T9 七寸平板手机ROOT方法 教程分享
  4. java实现excel打印_java实现 excel 打印 问题
  5. 迅睿CMS 全站生成静态
  6. mail 465邮件配置
  7. 三个遗传算法matlab程序实例
  8. 数学之美读书笔记--摘抄
  9. max3490esa_MAX4524EUB_美信MAXIM半导体代理就找宇航
  10. 北京利达消防设备调试软件