• 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'&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('
    '+i[0]+'
    ') #把小说的目录写入文件
            f.write(n2)

    运行效果如下:

    保存的内容如下:

  • 相关阅读:
    elasticsearch中多个字段聚合及java实现
    elasticsearch中must和should组合查询
    Hash(哈希/散列)表中冲突处理及命中计算
    PHP代码审计理解(一)----Metinfo5.0变量覆盖
    SSL 3.0 POODLE攻击信息泄露漏洞_CVE-2014-3566
    菜鸡试飞----SRCの信息收集手册
    python3-邮件发送-不同格式
    windows下常用快捷指令记忆
    杂记
    偶然碰到的编码转换技巧--叮!
  • 原文地址:https://www.cnblogs.com/yuzly/p/10324250.html
Copyright © 2020-2023  润新知