Python实战:爬取小说《盗墓笔记》
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实战:爬取小说《盗墓笔记》相关推荐
- Python beautifulsoup爬取小说
Python beautifulsoup爬取小说 提前准备好需要的库文件,命令行输入以下命令 pip install requests pip install bs4 pip install lxml ...
- 用python爬小说_今天分享一个用Python来爬取小说的小脚本!(附源码)
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...
- python爬取天气预报数据并保存为txt格式_今天分享一个用Python来爬取小说的小脚本!(附源码)...
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...
- python 爬虫爬取小说信息
1.进入小说主页(以下示例是我在网上随便找的一片小说),获取该小说的名称.作者以及相关描述信息 2.获取该小说的所有章节列表信息(最重要的是每个章节的链接地址href) 3.根据每个章节的地址信息下载 ...
- Python爬虫—爬取小说名著
周末闲来无事,本来想看一看书的,结果也没看进去(RNG输的我真是糟心...) 于是就用python写了一个爬虫,来爬取小说来看,防止下次还要去网上找书看. 我们先找一个看名著的小说网 我们打开http ...
- python爬虫爬取小说网站并转换为语音文件
前言 作为一个技术宅,本着为眼睛着想的角度考虑,能少看屏幕就尽量少看屏幕,可是又是一个小说迷,那就开动脑筋爬一下小说转换成语音来听书吧 第一章:爬取小说文件 把目标定在小说存储量比较大的网站:起点中文 ...
- python实战| 爬取虎牙高质量小姐姐私房照!
今天给大家介绍python如何爬取虎牙小姐姐并制作心形照片墙, 有兴趣的小伙伴们一起来看看吧! 点击进去,这颜值..... i了i了 需求分析 我们的目标有5个,分别是小姐姐的 房间名称.封面照片.昵 ...
- python实战|爬取1000位小姐姐私房照制作照片墙,刷新你三观的颜值!
今天给大家介绍python如何爬取虎牙小姐姐并制作心形照片墙, 有兴趣的小伙伴们一起来看看吧! 点击进去 卧槽,这颜值..... i了i了 需求分析 我们的目标有5个,分别是小姐姐的 房间名称.封面照 ...
- python爬虫实战-爬取小说
今天做一个爬虫练手的小实战:爬取顶点小说网的小说,实现下载到本地(虽然网站上本来就可以下载,不过还是自己写代码来有成就感嘛!) 爬取网站 进入官网后,点击元尊,就爬取这本书了. 我们先把整个网页爬下来 ...
- python 小说cms系统_「博文小说网」Python爬虫爬取小说网站 - seo实验室
博文小说网 #!/usr/bin/env Python # -*- coding: utf-8 -*- # @Author : Woolei # @File : book136_singleproce ...
最新文章
- iOS 根据数组中的字典的value值进行排序
- 论文简述 | TextSLAM:具有平面文本特征的视觉SLAM
- linux 读取飞信信息,Linux下飞信
- Qt之Q_GLOBAL_STATIC创建全局静态对象
- 【Python】 更棒的Excel操作模块xlwings
- 简简单单的代码让你轻松学会 动态代理
- 计算机图形学笔记 (第一周)
- php原始 实现双向队列,用PHP实现一个双向队列
- java零基础自学首选黑马程序员Java入门教程笔记01
- jsoup 网页抓取简介详解
- jpg格式电脑怎么弄_jpg格式图片电脑怎么弄
- MyEclipse断点无效
- 全国青少年计算机考试官网,全国青少年计算机考试开考 每年组织四次
- matlab每个循环命令行窗口输出,【matlab】命令行窗口一直不停的输出ans=1?
- Firefly互动广告机解决方案
- 炸!亚马逊将解散与印度亿万富翁的合资企业;eBay推迟公布2021年Q2财报;TikTok在英国进行测试电商功能…|洞悉跨境
- 51物联卡:浅谈物联网卡在智能安防中的发展前景
- 学习Docker之Docker初体验 简单用例---SpringBoot集成Docker的部署、发布与应用
- 自定义百度地图InfoWindow样式
- 你想拥有开挂的人生吗?