python 小说下载工具_下载输入python之小说下载器version2.0
本文是一篇关于下载输入的帖子
上一版本链接:传送门
这是我用pyinstaller打包成的exe文件,便利体验:传送门(上传了正在审核,请稍等)
这里使用了第三方库pyquery,安装方法见:上一版本链接
在上一版本的基础上做个改良.先上图:
上面是代码:
# -*- coding:gbk -*-
'''
file desc:novel downloader
author:kingviker
email:kingviker@163.com.kingviker88@gmail.com
date:2013-05-31
depends:python 2.7.4,pyquery
'''
import os,codecs,urllib,urllib2
from pyquery import PyQuery as pq
searchUrl = 'http://www.dushuge.net/modules/article/search.php'
baseSavePath="E:/enovel/"
print "小说下载器 by kingviker!"
def searchNovel(novelName):
values = urllib.urlencode({'searchkey' : novelName,
'searchtype' : 'articlename'})
req = urllib2.Request(url=searchUrl,data=values)
response = urllib2.urlopen(req)
searchHtml_pq = pq(response.read())
novelUrlHtml = searchHtml_pq("#content > .sf-mainbox > .head > h1 > a")
#print novelUrlHtml
if not novelUrlHtml :
return
return (novelUrlHtml.eq(2).text(),novelUrlHtml.eq(2).attr("href"))
def analyzeNovel(url):
#using pyquery to grub the webpage's content
html_pq = pq(url=url)
#print html_pq("div.book_article_texttable").find(".book_article_texttext")
totalChapters = len(html_pq("div.book_article_texttable").find(".book_article_listtext").find("a"))
return totalChapters
def fetchDownloadLinks(url):
#using to save pieces and chapter lists
pieceList=[]
chapterList=[]
html_pq = pq(url=url)
#find the first piece of the novel.
piece = html_pq("div.book_article_texttable > div").eq(0)
isPiece = True
if piece.attr("class")=="book_article_texttitle":
#get the current piece's text
pieceList.append(piece.text())
#print "piece Text:", piece
else:
isPiece = False
pieceList.append("无")
#scan out the piece and chapter lists
nextPiece=False
while nextPiece==False:
if isPiece:
chapterDiv = piece.next()
else:
isPiece = True
chapterDiv = piece
#print "章节div长度:",chapterDiv.length
piece = chapterDiv
if chapterDiv.length==0:
pieceList.append(chapterList[:])
del chapterList[:]
nextPiece=True
elif chapterDiv.attr("class")=="book_article_texttitle":
pieceList.append(chapterList[:])
del chapterList[:]
pieceList.append(piece.text())
else:
chapterUrls = chapterDiv.find("a");
for urlA in chapterUrls:
urlList_temp = [pq(urlA).text(),pq(urlA).attr("href")]
chapterList.append(urlList_temp)
print "下载列表收集实现",len(pieceList)
return pieceList
def downloadNovel(novel,startChapterNum):
# if os.path.exists(baseSavePath+novel[0]) is not True:
# os.mkdir(baseSavePath+novel[0])
#based on the piecelist,grub the special webpage's novel content and save them .
if os.path.exists(baseSavePath+novel[0]+".txt"):os.remove(baseSavePath+novel[0]+".txt")
#using codecs to create a file. write mode(w+) is appended.
novelFile = codecs.open(baseSavePath+novel[0]+".txt","wb+","utf-8")
pieceList = fetchDownloadLinks(novel[1])
chapterTotal = 0;
print "从",startChapterNum,"章开始下载"
#just using two for loops to analyze the piecelist.
for pieceNum in range(0,len(pieceList),2):
piece = pieceList[pieceNum]
print "开始下载篇章",pieceList[pieceNum]
chapterList = pieceList[pieceNum+1]
for chapterNum in range(0,len(chapterList)):
chapterTotal +=1
# print chapterTotal,startChapterNum,startChapterNum>chapterTotal
# print type(startChapterNum),type(chapterTotal)
if startChapterNum > chapterTotal:
continue
chapter = chapterList[chapterNum]
print "开始下载章节",chapter[0]
chapterPage = pq(url=novel[1]+chapter[1])
chapterContent = piece+" "+chapter[0]+"\r\n"
chapterContent += chapterPage("#booktext").html().replace("
","\r\n")
print "小说内容:",len(chapterContent)
novelFile.write(chapterContent+"\r\n"+"\r\n")
novelFile.close()
print "下载实现,文件位置:",baseSavePath+novel[0]+".txt"
while(True):
#if the novel's file system not exists,created.
if os.path.exists(baseSavePath) is not True:
os.mkdir(baseSavePath)
name = raw_input("请输入想要下载的小说名称,输入quit退出:")
if name =="quit":
print "bey"
break
novel = searchNovel(name)
if not novel :
print "没有查找到小说",name,"或者小说名称输出错误!"
else:
print "已找到小说:",novel[0]
result = raw_input("输入yes或回车选定小说,输入no重新输入小说名称:")
if not result or result=="yes":
print "开始分析章节信息..."
totalChapters = analyzeNovel(novel[1])
print "总章节数:",totalChapters
startChapterNum = raw_input("请输入肇端章节,全部下载请按回车:")
if not startChapterNum :
startChapterNum=0
#print startChapterNum
downloadNovel(novel,int(startChapterNum))
elif result =="no":
pass
每日一道理
今天阳光很好,坐在窗前,看窗外如此晴朗的天感觉特别舒心,雨过天晴后的世界总给人一种明媚,仿佛阳光照耀在“心田”上空,让前些天被风雨践踏的花朵重新得到爱的关怀,重现生命的活力!
这一版本重要更新如下:
1.函数封装
2,增加用户交互界面.
3,用户可自在输入小说名称查询下载
4.可选肇端下载章节
5.暂时取消单章保存模式
下一版本目标:
1.支撑模糊查询
2,增加热门小说列表
3.优化表现界面
文章结束给大家分享下程序员的一些笑话语录:
N多年前,JohnHein博士的一项研究表明:Mac用户平均IQ要比PC用户低15%。超过6000多的参加者接受了测试,结果清晰的显示IQ比较低的人会倾向于使用Mac。Mac用户只答对了基础问题的75%,而PC用户却高达83%。
---------------------------------
原创文章 By
下载和输入
---------------------------------
python 小说下载工具_下载输入python之小说下载器version2.0相关推荐
- python 小说下载工具_使用tkinter打造一个小说下载器,想看什么小说,就下什么...
前言 今天教大家用户Python GUI编程--tkinter 打造一个小说下载器,想看什么小说,就下载什么小说 先看下效果图 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkint ...
- python gui开发工具_深入解析Python,透析应用开发,涵盖9大应用领域的Python框架...
前言 当前,Python 已经成为最流行的程序设计语言之一,被越来越多的人作为首选语言来学习和应用.作为一种解释型的语言,Python具有内置的高级数据结构和简单有效的面向对象编程机制.同时,其语法简 ...
- python空间相册爬虫_爬虫技术实现空间相册采集器V.0.0.1版本
一. 功能需求分析: 在很多时候我们需要做这样一个事情:我们想把我们QQ空间上的相册高清图像下载下来,怎么做?到网上找软件?答案是否定的,理由之一:网上很多软件不知有没有病毒,第二它有可能捆了很 ...
- 用Tkinter打造自己的Python IDE开发工具(6)Python多文件共享变量与智能插件设计
用Tkinter打造自己的Python IDE开发工具(6)Python多文件共享变量与智能插件设计 在Python中实现多个文件共享变量,即又可以获取变量值,也可以修改变量的值.有两种方式. 一是作 ...
- python脚本怎么启动_怎么启动python脚本
Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断 更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. ...
- IDM下载器|Windows系统经典下载工具idm6.41|IDM如何在线视频下载工具 |下载视频教程
IDM全称Internet Download Manager,是一种将下载速度提高最多5倍的专业下载工具,支持大部分文件格式下载和基本所有的下载链接,无视网址本身下载限速,直接达到电脑该有的网速. 下 ...
- python 小说下载工具_下载代码python之小说下载器
时光紧张,先记一笔,后续优化与完善. 首先声明,我写这个是为了练手,我不看小说了.因为眼睛近视太厉害了,我连手机都不玩了. 小说下载器的目标是为了解决当初市面上能下载最新小说的网站是在太少了,但是在线 ...
- 下载输入python之小说下载器version2.0
本文是一篇关于下载输入的帖子 上一版本链接:传送门 这是我用pyinstaller打包成的exe文件,便利体验:传送门(上传了正在审核,请稍等) 这里使用了第三方库pyquery,安装方法见:上一版本 ...
- python电脑下载教程_苹果电脑python下载安装教程
这个问题我遇到过的,你把现在装的python卸了,装个32位的python就可以了,32位安装包官网上有. . 工具/原料:python.win7电脑一台方法/步骤:1.打开win7电脑,从百度搜索p ...
最新文章
- BZOJ.1558.[JSOI2009]等差数列(线段树 差分)
- python慕课视频-python爬虫:爬取网站视频
- Android Socket编程
- 推荐些在线小制作小工具
- C++ Primer 小贴士之第一二章
- 【实例分割】cvpr2021_Look Closer to Segment Better
- 程序员面试金典 - 面试题 16.11. 跳水板(数学)
- Python高级——多线程(threading)
- 解决sql2008附加不了2005的数据库文件的问题
- 导入php插件_微信公众号吸粉的方法(将网站100%的流量导入到公众号中)
- jmeter教程https://max.book118.com/html/2019/0108/6145005114002000.shtm
- Altium_Designer如何快速寻找元件和封装
- Java应用在docker环境配置容器健康检查
- adb 查看浏览器内核
- rebase操作步骤
- activity已经销毁判断
- [CTF]天网管理系统
- 【SpringCloud-学习笔记】Docker基本操作
- 异常全家桶来咯,异常捕获,异常抛出,自定义异常
- 为什么新冠德尔塔毒株如此“危险”?
热门文章
- WordPress备案链接工信部官网
- (1)课程简介-CS231A:Computer Vision, From 3D Reconstruction to Recognition
- 微服务项目之电商--17.商品规格数据结构SPU和SKU
- VC++实现双人对决的围棋程序,附源码
- 物联卡官方充值渠道在哪里?物联网卡管理平台有什么作用?
- Java自动化测试之TestNG生成测试报告
- 用户故事与敏捷方法—用户角色(实战一)
- 【MLDN_李兴华】JAVA学习攻略+新书导读
- 内网ip 查 核心交换机 流量_局域网通过IP地址如何找到电脑的位置?
- DELL服务器手动调整风扇转速