Python实战:爬取小说《盗墓笔记》

题目要求

从网页 http://www.daomubiji.com/中可以看到《盗墓笔记》的每一本书,点开能够查看每一本书的具体内容。现在要求,保存这些内容到本地,为了看起来比较舒服,要求对每一本书新建一个文件夹,对于这本书的每一个章节,都用一个txt文件存储。

思路分析

主要思路:

1.从首页获取到 每一本书的书名和链接

2.从书的链接中获取到 每一本书的每一个章节和章节链接

3.从章节链接中获取到 正文内容保存到本地

其他:

选择使用 多线程 的方法加快速度

使用XPath的方法进行匹配

如果章节标题中有?,在本地保存中要去掉

代码实现

from threading import Thread, Lock
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)
import requests
from lxml import etree
import os# 获取结构化数据
def get_HTML(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36'}response = requests.get(url=url, headers=headers, verify=False)html = response.content.decode('utf-8')tree = etree.HTML(html)return tree# 获取每本书的书名和链接
def get_bookinfo(url):name_xpath = '//div[@class="sitenav"]//a/text()'href_xpath = '//div[@class="sitenav"]//a/@href'p = get_HTML(url)name_list = p.xpath(name_xpath)[1:]href_list = p.xpath(href_xpath)[1:]return name_list, href_list# 获取每本书的标题和标题链接
def get_chapter(url):p = get_HTML(url)href = p.xpath('//div[@class="excerpts"]//a/@href')name = p.xpath('//div[@class="excerpts"]//a/text()')return name, href# 从每一章节中获取正文
def get_text(t_url, b_name, t_name):# 获取对应标题链接的htmlp = get_HTML(t_url)# 从中获取对应的正文数据content = p.xpath('//article[@class="article-content"]//p/text()')# 如果标题中含有?if '?' in t_name:t_name = t_name[:len(t_name) - 1]# 保存正文with open(r'C:\Users\GengKY\Desktop\daomu\{}\{}.txt'.format(b_name, t_name), 'a', encoding="GBK") as f:f.write('\n'.join(content))print('%s   %s ' % (b_name, t_name))# 主函数
if __name__ == '__main__':url = "http://www.daomubiji.com/"list1, list2 = get_bookinfo(url)theadlist = [] # 线程列表# print(list1) #书名# print(list2) #书的链接for x in range(len(list1)):# 为每本书创建一个存储用的文件夹os.mkdir(r'C:\Users\GengKY\Desktop\daomu\{}'.format(list1[x]))# 获取每本书的章节标题和链接chapterlist, chapterurl = get_chapter(list2[x])# 多线程for y in range(len(chapterlist)):# 多线程thread = Thread(target=get_text, args=(chapterurl[y], list1[x], chapterlist[y]))thread.start()# 把线程对象都存储到 threadlist中theadlist.append(thread)print("所有子线程结束")# 释放/关闭进程for thread in theadlist:thread.join()print('主线程结束')

运行截图

Python实战:爬取小说《盗墓笔记》相关推荐

  1. Python beautifulsoup爬取小说

    Python beautifulsoup爬取小说 提前准备好需要的库文件,命令行输入以下命令 pip install requests pip install bs4 pip install lxml ...

  2. 用python爬小说_今天分享一个用Python来爬取小说的小脚本!(附源码)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...

  3. python爬取天气预报数据并保存为txt格式_今天分享一个用Python来爬取小说的小脚本!(附源码)...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...

  4. python 爬虫爬取小说信息

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

  5. Python爬虫—爬取小说名著

    周末闲来无事,本来想看一看书的,结果也没看进去(RNG输的我真是糟心...) 于是就用python写了一个爬虫,来爬取小说来看,防止下次还要去网上找书看. 我们先找一个看名著的小说网 我们打开http ...

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

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

  7. python实战| 爬取虎牙高质量小姐姐私房照!

    今天给大家介绍python如何爬取虎牙小姐姐并制作心形照片墙, 有兴趣的小伙伴们一起来看看吧! 点击进去,这颜值..... i了i了 需求分析 我们的目标有5个,分别是小姐姐的 房间名称.封面照片.昵 ...

  8. python实战|爬取1000位小姐姐私房照制作照片墙,刷新你三观的颜值!

    今天给大家介绍python如何爬取虎牙小姐姐并制作心形照片墙, 有兴趣的小伙伴们一起来看看吧! 点击进去 卧槽,这颜值..... i了i了 需求分析 我们的目标有5个,分别是小姐姐的 房间名称.封面照 ...

  9. python爬虫实战-爬取小说

    今天做一个爬虫练手的小实战:爬取顶点小说网的小说,实现下载到本地(虽然网站上本来就可以下载,不过还是自己写代码来有成就感嘛!) 爬取网站 进入官网后,点击元尊,就爬取这本书了. 我们先把整个网页爬下来 ...

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

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

最新文章

  1. iOS 根据数组中的字典的value值进行排序
  2. 论文简述 | TextSLAM:具有平面文本特征的视觉SLAM
  3. linux 读取飞信信息,Linux下飞信
  4. Qt之Q_GLOBAL_STATIC创建全局静态对象
  5. 【Python】 更棒的Excel操作模块xlwings
  6. 简简单单的代码让你轻松学会 动态代理
  7. 计算机图形学笔记 (第一周)
  8. php原始 实现双向队列,用PHP实现一个双向队列
  9. java零基础自学首选黑马程序员Java入门教程笔记01
  10. jsoup 网页抓取简介详解
  11. jpg格式电脑怎么弄_jpg格式图片电脑怎么弄
  12. MyEclipse断点无效
  13. 全国青少年计算机考试官网,全国青少年计算机考试开考 每年组织四次
  14. matlab每个循环命令行窗口输出,【matlab】命令行窗口一直不停的输出ans=1?
  15. Firefly互动广告机解决方案
  16. 炸!亚马逊将解散与印度亿万富翁的合资企业;eBay推迟公布2021年Q2财报;TikTok在英国进行测试电商功能…|洞悉跨境
  17. 51物联卡:浅谈物联网卡在智能安防中的发展前景
  18. 学习Docker之Docker初体验 简单用例---SpringBoot集成Docker的部署、发布与应用
  19. 自定义百度地图InfoWindow样式
  20. 你想拥有开挂的人生吗?

热门文章

  1. Android-春招-面试经历-2019年,2021年Android进阶者的新篇章
  2. 计算机控制节点设备原理,CRH1型动车组计算机控制系统计算机设备及功能概述...
  3. silk,speex,ilbc,_转自王贵平
  4. 特权账号管理面临的安全挑战
  5. favicon.ico使用方式
  6. 回归预测 | MATLAB实现SVR支持向量机回归多输入单输出预测
  7. 普通人有捷径可以走吗?
  8. 九 用vi编辑器创建和编辑正文文件
  9. 【实用】增强WIFI信号(利用闲置无线路由器)
  10. 程序员麦兜【编程笔记】-String存储管理