python爬虫之小说网站--下载小说(正则表达式)
Posted 雨中落叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫之小说网站--下载小说(正则表达式)相关的知识,希望对你有一定的参考价值。
python爬虫之小说网站--下载小说(正则表达式)
思路:
1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/2447.html)
2.分析自己要得到的内容,首先分析url,发现只有后面的是变化的,先获得小说的没有相对路径,然后组合成新的url(每章小说的url)
3.获得每章小说的内容,进行美化处理
代码如下:
#小说爬虫
import requests
import re
url=\'https://www.kanunu8.com/book4/10509/\'
#因为编码原因,先获取二进制内容再进行解码
txt=requests.get(url).content.decode(\'gbk\') #当前小说编码为"gbk2312"
m1=re.compile(r\'<td colspan="4" align="center"><strong>(.+)</strong>\')
#print(m1.findall(txt))
m2=re.compile(r\'<td( width="25%")?><a href="(.+\\.html)">(.+)</a></td>\')
#print(m2.findall(txt))
raw=m2.findall(txt) #获得小说的目录以及对应的每个章节的相对路径
sanguo=[]
for i in raw:
sanguo.append([i[2],url+i[1]]) #生成每个章节的url
#print(sanguo)
m3=re.compile(r\'<p>(.+)</p>\',re.S) #每章节小说内容
m4=re.compile(r\'<br />\') #<br />小说内容中的符号
m5=re.compile(r\' \')
with open(\'中国合伙人1.txt\',\'a\') as f:
for i in sanguo:
i_url=i[1] #i[1]为小说章节url
print("正在下载----->",i[0]) #i[0]为小说章节目录
r_nr=requests.get(i_url).content.decode(\'gbk\')
n_nr=m3.findall(r_nr)
#print(n_nr)
n=m4.sub(\'\',n_nr[0]) #把n_nr[0]中"<br />"替换为空
n2=m5.sub(\'\',n)
f.write(\'\\n\'+i[0]+\'\\n\') #把小说的目录写入文件
f.write(n2)
运行效果如下:
保存的内容如下:
以上是关于python爬虫之小说网站--下载小说(正则表达式)的主要内容,如果未能解决你的问题,请参考以下文章