时光紧张,先记一笔,后续优化与完善。

首先声明,我写这个是为了练手,我不看小说了.因为眼睛近视太厉害了,我连手机都不玩了.

小说下载器的目标是为了解决当初市面上能下载最新小说的网站是在太少了,但是在线观看的却很多,所以我写了这个在线抓取小说的工具.代码是针对特定的网站编写的代码,但是我认为这个网站时光很长,小说也很全,应该能满意绝大多数的需求,网站名字这里不说,一会大家代码里看,我怕有法律纠纷.

因为这个是一个网页抓取去读html的一个工具,所以需要一个解析html的框架,我发明了pyquery,因为我自己以为jquery学得不错(jquery 写过自己的插件,浏览器兼容性问题不大都能处理,jqueryui基本上全部的东西都用过,还自定制过很多jqueryui插件.能自己修复官方bug),发明了这个pyquery法宝,肯定不能放过.安装python插件我应用的是easy_install,

我原先应用的pip但是发明不如easy_install好用,我在装pyquery的时候,用pip就不能安装胜利,pip在处理依赖库的时候报错了,我用easy_install就安装胜利了.easy_install 和pip的安装可以看这里:http://blog.csdn.net/qq413041153/article/details/8950247

安装好easy_install 以后直接在cmd里面输入:

easy_install pyquery

如图,因为我已经安装过了,所以直接提示我已经在easy-install.pth中激活了pyquery1.2.4.

上面直接上代码:

每日一道理

如果说生命是一座庄严的城堡,如果说生命是一株苍茂的大树,如果说生命是一只飞翔的海鸟。那么,信念就是那穹顶的梁柱,就是那深扎的树根,就是那扇动的翅膀。没有信念,生命的动力便荡然无存;没有信念,生命的美丽便杳然西去。(划线处可以换其他词语)

# -*- coding:gbk -*-

'''

file desc:novel downloader

author:kingviker

email:kingviker@163.com.kingviker88@gmail.com

date:2013-05-21

depends:python 2.7.4,pyquery

'''

import os,codecs

from pyquery import PyQuery as pq

saveMode="singleFile" #singleFile or singleChapter

#novel's main webpage.

url = "http://www.dushuge.net/html/14/14712/"

#where the novels will be saved

baseSavePath="E:/enovel/"

#using pyquery to grub the webpage's content

html_pq = pq(url=url)

#using jquery's grammar to get the novel's name/

novelName = html_pq("div.book_news_style_text2 > h1").text()

print novelName

#if the novel's file system not exists,created.

if os.path.exists(baseSavePath+novelName) is not True:

os.mkdir(baseSavePath+novelName)

#using to save pieces and chapter lists

pieceList=[]

chapterList=[]

#find the first piece of the novel.

piece = pq(html_pq("div.book_article_texttable").find(".book_article_texttitle")[0])

#get the current piece's text

pieceList.append(piece.text())

print "piece Text:", piece.text()

#scan out the piece and chapter lists

nextPiece=False

while nextPiece==False:

chapterDiv = piece.next()

#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)

#based on the piecelist,grub the special webpage's novel content and save them .

if saveMode == "singleFile":

if os.path.exists(baseSavePath+novelName+".txt"):os.remove(baseSavePath+novelName+".txt")

#using codecs to create a file. write mode(w+) is appended.

novelFile = codecs.open(baseSavePath+novelName+".txt","wb+","utf-8")

#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)):

chapter = chapterList[chapterNum]

print "开始下载",chapter[0],"地址:",chapter[1]

chapterPage = pq(url=url+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()

else:

# as same as above

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)):

chapter = chapterList[chapterNum]

print "开始下载",chapter[0],"地址:",chapter[1]

novelFile = codecs.open(baseSavePath+novelName+os.sep+piece+chapter[0]+".txt","wb","utf-8")

chapterPage = pq(url=url+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 "下载实现"

直接改换代码中的小说主页面 即可下载,小说文件会放在e:/novel/下,可以选择单章保存或者单文件保存.

我没有封装成函数,因为我比较懒.

有问题或者错误 欢送批评指正.

弥补:

代码里面用到了codecs,这里有篇文章可以帮助大家了解codecs:传送门

文章结束给大家分享下程序员的一些笑话语录:

人在天涯钻,哪儿能不挨砖?日啖板砖三百颗,不辞长做天涯人~

python 小说下载工具_下载代码python之小说下载器相关推荐

  1. python gui开发工具_深入解析Python,透析应用开发,涵盖9大应用领域的Python框架...

    前言 当前,Python 已经成为最流行的程序设计语言之一,被越来越多的人作为首选语言来学习和应用.作为一种解释型的语言,Python具有内置的高级数据结构和简单有效的面向对象编程机制.同时,其语法简 ...

  2. python 小说下载工具_使用tkinter打造一个小说下载器,想看什么小说,就下什么...

    前言 今天教大家用户Python GUI编程--tkinter 打造一个小说下载器,想看什么小说,就下载什么小说 先看下效果图 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkint ...

  3. 用Tkinter打造自己的Python IDE开发工具(6)Python多文件共享变量与智能插件设计

    用Tkinter打造自己的Python IDE开发工具(6)Python多文件共享变量与智能插件设计 在Python中实现多个文件共享变量,即又可以获取变量值,也可以修改变量的值.有两种方式. 一是作 ...

  4. IDM下载器|Windows系统经典下载工具idm6.41|IDM如何在线视频下载工具 |下载视频教程

    IDM全称Internet Download Manager,是一种将下载速度提高最多5倍的专业下载工具,支持大部分文件格式下载和基本所有的下载链接,无视网址本身下载限速,直接达到电脑该有的网速. 下 ...

  5. python 小说下载工具_下载输入python之小说下载器version2.0

    本文是一篇关于下载输入的帖子 上一版本链接:传送门 这是我用pyinstaller打包成的exe文件,便利体验:传送门(上传了正在审核,请稍等) 这里使用了第三方库pyquery,安装方法见:上一版本 ...

  6. python模块下载过程_常用的python模块及安装方法

    bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...

  7. python电脑下载教程_苹果电脑python下载安装教程

    这个问题我遇到过的,你把现在装的python卸了,装个32位的python就可以了,32位安装包官网上有. . 工具/原料:python.win7电脑一台方法/步骤:1.打开win7电脑,从百度搜索p ...

  8. python写自动化工具_微软最强 Python 自动化工具开源了!不用写一行代码!

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  9. python模块下载地址_常用的python模块功能和下载地址

    adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework c ...

最新文章

  1. 说一下你对多态的理解?_掌握了多态的特性,写英雄联盟的代码更少啦!
  2. 漫画:程序员战力图鉴
  3. vite + vue2 + eslint 项目配置
  4. 验证登陆信息的合法性
  5. CPT:刷爆少样本REC任务!清华刘知远团队提出跨模态预训练Prompt Tuning
  6. java ipmitool_ipmitool使用手册
  7. 动态库加载的函数总结
  8. 对象functionJavaScript: The Definitive Guide 权威指南,读书笔记(一)
  9. C语言——结构体数组的使用案例(如何判断两个矩形是否相交,其中一个是否包含在另外一个里面,点是否在矩形中)...
  10. Linux内核DTB文件启动的几种方式
  11. word中硬回车与软回车的区别与替换·转换(shift+enter)
  12. 关于郑州大学校园网锐捷客户端禁止热点分享,禁止多网卡的解决办法
  13. Ccharles 爬取微信公众号和小程序
  14. Android init.rc on property
  15. 总结——》【养生之道】
  16. 哥吃的不是饭,是农药~~!是化肥~~!是激素~!!
  17. 移植AT91Bootstrap1.15
  18. OpenGL编程轻松入门之显示例表
  19. MySQL多表查询大全(超精确)
  20. GSW同态加密方案学习

热门文章

  1. MFC_设置对话框背景图片
  2. 【4399运维笔试题】
  3. Scrum的三个工件(产品Backlog、Sprint Backlog、产品增量 )
  4. 分布式消息队列如何保证消息有且仅被消费一次?
  5. 2023计算机毕业设计SSM最新选题之java全美旅行社网站3ircv
  6. EGE 专栏博客写作计划
  7. 运算放大器和比较器的区别
  8. Androistudio打不开Missing essential plugins:com.android.tools.designorg.jetbrains.android Pleas
  9. 从敲代码到敲文字,程序员大V“敖丙”的自媒体之路
  10. 使用Python tkinter设计棋类游戏思路及增加棋盘背景