我以前喜欢看小说,玄幻,武侠,修真是我的最爱,刚学python不久,出于我对小说的热爱,我写了个脚本用来下载我经常看的笔趣阁网站首页所有的小说
首先得到网站首页的html,分析首页中有多少小说,循环得到小说的html,提取出小说名字,创建小说名字为名的文本,将每一章节的章节名和内容提取出来写入到文本中,循环直到最后一个章节,然后开始下一本小说
W WW.002pc .COM认为此文章对《python调用shell脚本 参数python下载小说》说的很在理。
我这里是先把html下载到本地G:\url\中,然后读取的,其实直接打开url也可以。之前运行时有时候会卡在某个地方,得不到某个网页,我以为是缓存的问题,其实不是。解决方法是我设置了五秒中的超时和异常处理。如果五秒钟得不到这一章节的页面那么就跳过下载下一章
# -*- coding: utf-8 -*-
# -------------------------------------------
# 下载http://www.biquge.la笔趣阁首页上显示的所有小说
# 下载的小说存放在G:\txt文件夹下
# -------------------------------------------
# 2014/8/23
# wyp
# -------------------------------------------
import re
import urllib
import os
import socket
def getHtml(url):
reg = r'http:\.\.(.*)'
res = re.compile(reg)
urlstr = url.replace('/', '.')
print urlstr
name = re.findall(res, urlstr)
urlpathname = r'G:\url' +'\\' + name[0]
print 'urlpathname = '+urlpathname
try:
socket.setdefaulttimeout(5.0)
urllib.urlretrieve(url, urlpathname)
except:
pass
print 'getHtml ---------------over'
return urlpathname
def getBook(html):
reg = r'(.*?)'
res = re.compile(reg)
zhangJie = re.findall(res, html)
return zhangJie
def getContent(html):
reg = r'
res = re.compile(reg)
content = re.findall(res, html)
return content
if __name__ == "__main__":
url = raw_input("please input url: ")
urlpathname = getHtml(url)
print urlpathname
f1 = open(urlpathname, 'rb+')
html = f1.read()
print html
Book = getBook(html)
#去重保持元素顺序
book = list(set(Book))
book.sort(key=Book.index)
for b in book:
realurl = url + '/book/' + b + '/'
print realurl
realurlname = getHtml(realurl)
print realurlname
f2 = open(realurlname, 'rb+')
realhtml = f2.read()
BookName = getName(realhtml)
filepath = os.path.join(r"G:\txt", BookName[0])
filename = filepath + '.txt'
print filename
if os.path.exists(filename):
continue
fd = open(filename, 'w+')
zhangjie = getZhangJie(realhtml)
for zj in zhangjie:
sonurl = realurl + zj[0]
print "url = %s" % sonurl
try:
sonurlname = getHtml(sonurl)
print '-----'+sonurlname
except:
continue
try:
f3 = open(sonurlname, 'rb+')
except IOError:
continue
sonhtml = f3.read()
zhangjieming = getName(sonhtml)
if len(zhangjieming) == 0:
continue
fd.write('\t\t\t\t\t' + zhangjieming[0] + '\r\n')
print "downding " + zhangjieming[0]
fd.write('\r\n')
fd.flush()
try:
content = getContent(sonhtml)
except:
pass
if len(content) == 0:
continue
c1 = content[0].replace('
', '')
c2 = c1.replace(' ', ' ')
fd.write(c2)
fd.write('\r\n\r\n\r\n\r\n')
fd.flush()
fd.close()
f2.close()
f3.close()
更多:python调用shell脚本 参数python下载小说
https://www.002pc.comhttps://www.002pc.com/python/3449.html
你可能感兴趣的python,下载,小说
什么组装电脑关于Python在Linux、Mac和Windows上的安装方法总结
一.Linux下安装python
1.python源码安装包下载地址:
https://www.python.org/downloads/source/
2.下载完tar.xz压缩包以后,开始解压
php 7.1 国内下载地址PHP文件下载类
//==================================================== 电脑技术网认为此文章对《php 7.1 国内下载地址PHP文件下载类》说的很在理,www
mysql 查出数据一对多python使用unittest测试接口步奏详解
这次给大家带来python使用unittest测试接口步奏详解,python使用unittest测试接口的注意事项有哪些,下面就是实战案例,一起来看一下。
ie8浏览器官方下载 win7Windows7中如何批量修改文件属性
问:以前我用Windows XP时,因嫌显示器上的字小,所以将小说下载到本地硬盘,再修改源文件,将字体放大后再看。现在我新买了一台电脑,预装的是Windows 7 家庭普通版,却发现文件的
linux math 库下载命令wget怎么使用
wget是一个从网络上自动下载文件的自由工具,那么大家知道下载命令wget怎么使用吗?下面小编就为大家带来了下载命令wget使用的方法。下载命令wget使用方法wget 是一个命令
linux内核代码完全注释Python 3.4.0 beta 2 发布,修复多个bug
Python 3.4.0 beta 2 发布,此版本包括对 3.x 系列的改进和一些小的 bug 修复。
cf电脑下载官方下载Nginx学习笔记之Nginx介绍与安装
002pc.com认为此文章对《cf电脑下载官方下载Nginx学习笔记之Nginx介绍与安装》说的很在理。Nginx学习笔记之Nginx介绍与安装,有需要的朋友可以参考下。
php软件官网如何下载KindEditor在线文本编辑器使用
下载编辑器下载 KindEditor 最新版本,下载之后打开 examples/index.html 就可以看到演示。下载页面: http://www.kindsoft.net/down.php2.
杨幂电脑桌面壁纸微软 Windows 7 Beta 下载
Windows 7 Beta 32-bit English 下载地址:W WW.002pc .COM从杨幂电脑桌面壁纸微软 Windows 7 Beta 下载分析来看,对杨幂电脑桌面壁纸微软 Windows
linux get currentUbuntu 下载编译 Android5.0 源码
1.安装ubuntu编译Android 5.0 需要ubuntu 64位的操作系统,在 http://mirrors.ustc.edu.cn/ubuntu-releases/14.10/ 下载Ubuntu
0踩
赏
0 赞