从“顶点小说”下载完整小说——python爬虫
此程序只是单纯的为了练习而做,首先这个顶点小说非收费型的那种小说网站(咳咳,我们应该支持正版,正版万岁,✌)。经常在这个网站看小说,所以就光荣的选择了这个网站。此外,其实里面是自带下载功能的,而且支持各种格式:(TXT,CHM,UMD,JAR,APK,HTML),所以可能也并没有设置什么反爬措施,我也只设置了请求头。然后内容是保存为txt格式。
内容涉及到request的使用(编码问题),xpath的使用,字符串的处理(repalce产生列表达到换行效果),文件I/O
顶点小说:https://www.booktxt.net
代码功能:输入小说名,若顶点小说中存在,则可直接下载。最终效果如下:


# -*- coding:utf-8 -*-
import requests
from lxml import etree novel_name = '' #全局变量,存放小说名称
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'} def get_url(name):
'''
通过百度获取小说在顶点小说中的网址
name:小说名
'''
#site: booktxt.net + 小说名 指定为该网站搜索
baidu = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=site%3A%20booktxt.net%20'+name #获取该小说在顶点小说中的网址
r = requests.get(baidu, headers=headers)
html = etree.HTML(r.content)
try:
#提取网址链接,若不存在则退出程序
url = html.xpath('//*[@id="1"]/h3/a/@href')[0]
url =requests.get(url, headers=headers).url
except:
print("该小说不存在!")
exit(0)
if url[-4:] == 'html': #搜索结果为某一章节,结果无效
print("该小说不存在!")
exit(0)
get_chapter(url) #获取小说章节 def get_chapter(url):
'''
获取搜索到的小说名,并询问是否下载 :param url: 小说的链接
'''
global novel_name r = requests.get(url=url,headers=headers)
coding = r.apparent_encoding #获取网页编码格式 html = etree.HTML(r.content, parser=etree.HTMLParser(encoding=coding)) novel_name = html.xpath('//*[@id="info"]/h1/text()')[0]
print('小说名:'+novel_name+'\n是否下载?是/否\n')
flag = input()
if flag=='否':
print('退出系统')
exit(0) list = html.xpath('//*[@id="list"]/dl/dd[position()>8]') #获取章节列表
for item in list:
chapter_name = item.xpath('./a')[0].text #每一章的名称
print(chapter_name)
link = item.xpath('./a/@href')[0] #每章的网址链接
full_link = url+link #每章的完整地址
print(full_link)
get_text(chapter_name,full_link) def get_text(name,link):
'''
获取每章的内容并写入至txt文件中
:param name: 小说章节名
:param link: 章节链接
:return:
''' r = requests.get(url=link, headers=headers)
coding = r.apparent_encoding
r = r.content html = etree.HTML(r, parser=etree.HTMLParser(encoding=coding))
#获取一章内容,并以空格为界分割成字符串列表
text = html.xpath('string(//*[@id="content"])').split()
#print(text)
#创建小说名.txt文件
with open('{}.txt'.format(novel_name),'a+',encoding='utf-8') as f:
f.write('\t'*3+name+'\n') #章节名
for i in range(len(text)):
f.write(' '*4+text[i]+'\n') if __name__ == '__main__':
novel_name = input('请输入小说名称:')
get_url(novel_name)
从“顶点小说”下载完整小说——python爬虫的更多相关文章
- 小说免费看!python爬虫框架scrapy 爬取纵横网
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...
- 批量下载小说网站上的小说(python爬虫)
随便说点什么 因为在学python,所有自然而然的就掉进了爬虫这个坑里,好吧,主要是因为我觉得爬虫比较酷,才入坑的. 想想看,你可以批量自动的采集互联网上海量的资料数据,是多么令人激动啊! 所以我就被 ...
- python爬虫之小说网站--下载小说(正则表达式)
python爬虫之小说网站--下载小说(正则表达式) 思路: 1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/244 ...
- 初次尝试python爬虫,爬取小说网站的小说。
本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...
- Python爬虫-爬小说
用途 用来爬小说网站的小说默认是这本御天邪神,虽然我并没有看小说,但是丝毫不妨碍我用爬虫来爬小说啊. 如果下载不到txt,那不如自己把txt爬下来好了. 功能 将小说取回,去除HTML标签 记录已爬过 ...
- Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法)
从某些网站看小说的时候经常出现垃圾广告,一气之下写个爬虫,把小说链接抓取下来保存到txt,用requests_html全部搞定,代码简单,容易上手. 中间遇到最大的问题就是编码问题,第一抓取下来的小说 ...
- Python爬虫爬取全书网小说,程序源码+程序详细分析
Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...
- 如何用python爬虫从爬取一章小说到爬取全站小说
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...
- python爬虫小说代码,可用的
python爬虫小说代码,可用的,以笔趣阁为例子,python3.6以上,可用 作者的QQ:342290433,汉唐自远工程师 import requests import refrom lxml i ...
随机推荐
- yum 安装 lnmp
一. 系统 更新 yum -y update 二. 安装nginx 创建文件 vim /etc/yum.repos.d/nginx.repo 文件内容,这配置是安装最新的稳定版1.8 [nginx] ...
- 进程&多道技术
进程 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都 ...
- Asp.Net MVC 开发技巧(一)
开发程序时的流程: 1.设计数据模型. 数据模型最为重要,不仅关系到数据的存储,同时程序的可扩展性,效率也受影响,甚至决定开发工作量.所以要极其认真的设计数据库的表和相关字段. 建完基本的数据模型后, ...
- 内存池-转载自IBM
[转载自IBM]讲的很好~推荐看看 6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别.而在编程实践中,不可避免地要大量用到堆上的 ...
- Windows平台下Android应用抓包挖掘漏洞方法
0x01 大体思路 在安卓75%的市场占有率下,形形色色的安卓应用层出不穷,随之而来的便是大波的漏洞.在各类市场中随意翻一下,几乎都是连接网络的应用,这在给用户惬意体验的同时也给我们漏洞挖掘带来了机会 ...
- 【小游戏】flappy pig
(1)这款游戏的画面很简单:一张背景图,始终就没有变过: (2)这款游戏的对象只有俩:一个小鸟(有三种挥动翅膀的状态)以及一对管道(有管道向上和向下两个方向): http://www.cnblogs. ...
- EF直接的一對多多對多多對一的關係----也即是鏈錶查詢
基于EF4.1 code first 简单的CRUD 园子中已经有很多了 ~~ 真不想再写这个了 可是为了做一个完整的小demo 从开始 到后面的一些简单重构 还是决定认真把这个写出来 争取写些别人 ...
- PHP面试系列 之Linux(五)---- 案例
题:如何实现每天0点重新启动服务器? 答: (1)创建定时任务,并进行编辑 crontab -e (2)编写脚本内容 * * * reboot 0分 0时 每日 每月 每周 执行的命令:reb ...
- Android ProgressBar 进度条荧光效果
http://blog.csdn.net/ywtcy/article/details/7878289 这段时间做项目,产品需求,进度条要做一个荧光效果,类似于Android4.0 浏览器中进度条那种样 ...
- Android的JNI调用(一)
Android提供NDK开发包来提供Android平台的C++开发,用来扩展Android SDK的功能.主要包括Android NDK构建系统和JNI实现与原生代码通信两部分. 一.Android ...