【Python3爬虫-爬小说】爬取某小说网小说2/2--利用下一页抓

版权声明:== https://github.com/fyonecon == https://blog.csdn.net/weixin_41827162/article/details/84063130

声明:爬虫为学习使用,请各位同学务必不要对当放网站或i服务器造成伤害。务必不要写死循环。

-

详细思路参照代码注释:

如下:网址无任何规律,但是页面有一个下一页。那是要抓到下一页的地址就能把小说全部抓取。

-

from bs4 import BeautifulSoup
import urllib.request
import re


def down(url, num):

    # 获取网页
    response = urllib.request.urlopen(url)
    html = response.read().decode('utf-8')  # 编码格式gb2312,utf-8,GBK
    html_string = str(html)  # 转换成string,可以直接向数据库添加

    soup = BeautifulSoup(html_string, "html.parser")  # 解析网页标签

    # 获取小说标题
    try:
        # 匹配抓取区域
        pid1 = str(soup.findAll('h3', {"class": "j_chapterName"})[0])

        # 清除html标签
        pattern = re.compile(r'<[^>]+>', re.S)
        result1 = pattern.sub('', pid1)

        # 将抓取区域保存至txt文件
        fh = open(name + '.txt', 'a', encoding='utf-8')  # 制定txt编码,避免中文编码解析报错。a可以持续写入文件,w每次会覆盖之前的内容
        fh.write("\n" + result1)
        fh.close()

        print("标题页数=" + str(num) + "标题写入完成")
        pass
    except:
        print("标题报错页数=" + str(num))
        pass

    # 获取小说内容
    try:
        # 匹配抓取区域
        pid2 = str(soup.findAll('div', {"class": "read-content j_readContent"})[0])

        # 清除html标签
        pattern2 = re.compile(r'<[^>]+>', re.S)
        result2 = pattern2.sub('', pid2)

        # 将抓取区域保存至txt文件
        fh = open(name + '.txt', 'a', encoding='utf-8')  # 制定txt编码,避免中文编码解析报错。a可以持续写入文件,w每次会覆盖之前的内容
        fh.write("\n" + result2)
        fh.close()

        print("页数=" + str(num) + "内容写入完成")
    except:
        print("内容报错页数=" + str(num))
        pass

    # 获取下一页的链接
    try:
        pid = soup.findAll('a', {"id": "j_chapterNext"})[0]
        next_a = "https:" + pid['href']
        num += 1

        # global timer  # 无限setInterval模式
        # timer = threading.Timer(0.5, down(next_a, num))  # 延时0秒
        # timer.start()

        down(next_a, num)  # 下一页

        # print(next_a)
        print("自动执行下一页=" + num + str(next_a))
        pass
    except:
        print("无下一页,抓取完成。")
        pass

    pass


# 小说信息
name = "凤策长安-文字版"  # 小说书名
info_class = "连载中,古代言情,古典架空,17.82万字"  # 小说类别
info_detail = "凤轻 著。狐狸窝系列之二看血狐女神如何叱咤乱世!别人穿越是宅斗宫斗打脸虐渣,迎娶皇子王爷走上人生巅峰。楚凌穿越是逃命、逃命、还是逃命!"  # 小说简介
info_source = "来源:https://www.readnovel.com/book/11908179003210301#Catalog"  # 小说目录地址

# 写入小说信息
fh = open(name + '.txt', 'a', encoding='utf-8')
fh.write("《" + name + "》" + " || " + info_class + " || " + info_detail + " || " + info_source + "\n\n")
fh.close()

down("https://www.readnovel.com/chapter/11908179003210301/31965775208355765", 1)  # 第一页

-

-

猜你喜欢

转载自blog.csdn.net/weixin_41827162/article/details/84063130