爬取网页小说并存储到新建的文件夹里

import requests
import re
import os


# https://www.kanunu8.com/book3/8257/

def main():
    url = 'https://www.kanunu8.com/files/16.html'  # 小说主页的网址
    r0 = requests.get(url).content.decode('gbk')  # 获得网页的内容并转码为decode格式
    pattern = re.compile(r'(/book\d/\d{4}/)"><font color="#dc143c">(《.*》)', )  # 确定匹配的规则
    href = pattern.findall(r0)  # 匹配小说的网址片段以及《》内的文章名
    return href
    
    
def getUrl(h2):
    url = 'https://www.kanunu8.com' + h2  # 拼接之后就是小说的网址
    r = requests.get(url).content.decode('gbk')

    pattern = re.compile(r'<a href="(\d{6}.*)">(.*)</a>')
    hl = pattern.findall(r)  # 匹配到每一章的的url和标题
    return hl


def text(ul, h1):  # 获取标题和内容
    url2 = 'https://www.kanunu8.com/' + h1 + ul
    r1 = requests.get(url2).content.decode('gbk')

    pattern1 = re.compile(r'4">(.*)</font>')  # 题目
    pattern2 = re.compile(r'<p>(.+)</p>', re.S)  # 内容
    lst = list()

    t1 = pattern1.findall(r1)
    t2 = pattern2.findall(r1)
    t2 = t2[0]  # 一维列表转化为字符串
    t2 = re.sub(r'&\w*;', '', t2)  # 去除怪异字符片段
    t2 = re.sub(r'<br />', '', t2)  # 去除换行符
    t2 = re.sub(r'#\d*;', '', t2)  
    t2 = re.sub(r'\s*', '', t2)  # 去掉空格
    t1 = ''.join(t1)  # 把列表拼接成字符串,把,更换成''
    lst.append([t1, t2])  # 存储标题和内容到列表里
    return lst


def write(name, txt):  # 写入
    with open(name + '-正则爬取.txt', 'a') as f:
        f.write('\n' + txt + '\n')
    f.close()


def osPath(path):  # 这个是创建一个文件夹
    isExists = os.path.exists(path)  # 判断文件夹是否存在,存在返回True,否则False
    if not isExists:
        os.makedirs(path)  # 如果文件不存在,新建一个文件
    os.chdir(path)  # 切换到新建的文件夹下进行操作


if __name__ == '__main__':
    osPath('小说')
    m = main()  # 调用main方法获取小说的网址片段列表,以及对应的文章名
    for j in m:
        print('文章名', j[1])
        h = getUrl(j[0])  # 网址片段传入getUrl方法获取每一章的URL
        for i in h:
            print('\t正在下载---->', i[1])  # i[1]是章节的标题名
            try:
                t = text(i[0], j[0])  # 传入网址,返回标题和内容
                for tet in t[0]:
                    write(j[1], tet)
            except:
                print(i[1], '\t\t下载失败')
    print('-*-下载完毕-*-')

这就是爬取的小说的主页
Alt

哎嘿嘿嘿
下次写个封装到类里的
这个有些麻烦了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值