1.导入库
import urllib.request
import re
2.编写函数
#写一个叫xxx的函数
def down():
3.获取小说的源码并编码以gbk方式显示
url='http://www.quanshuwang.com/book/9/9055'
html=urllib.request.urlopen(url).read().decode('gbk')
如果不转成gbk显示是这样的
那又为什么一定是gbk呢 ?从它源码里面可以看见它的编码方式是什么
4.获取所有章节的链接
reg= r'<li><a href="(.*?)" title="(.*?)">(.*?)</a></li>'
urls=re.findall(reg,html)
5.循环所有的章节链接和标题
for url in urls:
novel_url=url[0]#链接
novel_title=url[1]#标题
6.获取章节源码
catal=urllib.request.urlopen(novel_url).read()
catal_html=catal.decode('gbk')
7.编写获取章节的内容的表达式
reg=r'</script> (.*?)<script type="text/javascript">'
8.多行匹配
reg = re.compile(reg, re.S)#
chapter = re.findall(reg, catal_html)
9.内容中间多余的空格代码( )和换行(/br)替换成空字符串‘’
chapter=chapter[0].replace(' ','')
chapter = chapter.replace('<br />', '')
不然下载下来中间是这样的
10.下载的同时提示正在下载哪一章节
print('正在下载 %s'%novel_title)
#上下文处理器把内容写进文本,这种方式不用自己关闭,也可以用{}.doc/{}.docx文档方式保存.
with open('{}.txt'.format(novel_title),'w') as d:
d.write(chapter)
11.最后调用函数
down()
保存在项目同目录下,可以选中右键Show in Explorer打开文件位置
全部代码
import urllib.request
import re
#写一个叫xxx的函数
def down():
#获取小说的页面源码
url='http://www.quanshuwang.com/book/9/9055'
#读取并编码以gbk方式显示
html=urllib.request.urlopen(url).read().decode('gbk')
#获取所有章节的链接
reg= r'<li><a href="(.*?)" title="(.*?)">(.*?)</a></li>'
urls=re.findall(reg,html)
#循环所有的章节链接和标题
for url in urls:
novel_url=url[0]#链接
novel_title=url[1]#标题
#获取章节源码
catal=urllib.request.urlopen(novel_url).read()
catal_html=catal.decode('gbk')
#获取章节的内容
reg=r'</script> (.*?)<script type="text/javascript">'
#多行匹配S
reg = re.compile(reg, re.S)#
chapter = re.findall(reg, catal_html)
#内容中间多余的空格代码( )和换行(/br)替换成空字符串‘’
chapter=chapter[0].replace(' ','')
chapter = chapter.replace('<br />', '')
#下载到电脑
print('正在下载 %s'%novel_title)
#上下文处理器把内容写进文本,这种方式不用自己关闭,也可以用{}.doc/{}.docx文档方式保存.
with open('{}.txt'.format(novel_title),'w') as d:
d.write(chapter)
#调用函数
down()