前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python爬虫之小说网站--下载小说(

python爬虫之小说网站--下载小说(

作者头像
py3study
发布2020-01-17 12:37:39
1.9K0
发布2020-01-17 12:37:39
举报
文章被收录于专栏:python3

python爬虫之小说网站--下载小说(正则表达式)

思路:

1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/2447.html)

2.分析自己要得到的内容,首先分析url,发现只有后面的是变化的,先获得小说的没有相对路径,然后组合成新的url(每章小说的url)

3.获得每章小说的内容,进行美化处理

代码如下:

代码语言:javascript
复制
#小说爬虫
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'&nbsp;&nbsp;&nbsp;&nbsp;')
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)

运行效果如下:

保存的内容如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档