爬取小说(用xpath方法+一点点正则)

爬取小说(用xpath方法+一点点正则)

一,准备工作

现在,我们长话短说,首先,我们随便找一个小说

在这里插入图片描述

章节显示如下:

在这里插入图片描述

在这里我们还是首先导入我们需要的库:

import requests
from lxml import etree
import re

然后对网页进行一个分析,由于刚好这个网页,不需要我们去构建翻页,章节的链接及名称可以直接观察到,非常好查找到。

在这里插入图片描述

二,代码展示

由于写的非常简单,就不多做解释了,大概大家都能看懂

import requests
from lxml import etree
import re

class novel_data_get(object):
    def __init__(self):
        self.url = 'https://www.ddyueshu.com/0_62/'
        self.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0'
        }

    def data_get_index(self):
        resp = requests.get(url=self.url, headers=self.headers)
        resp.encoding = "gbk"
        if resp.status_code == 200:
            return resp.text
        else:
            return None

    def parse_data_index(self, response):
        html = etree.HTML(response)
        data_list = html.xpath('//*[@id="list"]/dl//dd')
        for data in data_list:
            name = data.xpath('./a/text()')[0]
            url = "https://www.ddyueshu.com/" + data.xpath('./a')[0].get('href')
            self.parse_content_data(name, url)

    def parse_content_data(self, name, url):
        new_url = requests.get(url, headers=self.headers)
        new_url.encoding = 'gbk'
        url_content = new_url.text
        content = re.findall(r'<div id="content">(.*?)</div>', url_content)[0]
        self.save_novel_data(name, content)

    def save_novel_data(self, name, content):
        file_name = name
        with open('./photo/' + file_name + '.txt', 'w', encoding='utf-8') as f:
            f.write(content)
            print(f"{file_name}--已经保存完毕!")

    def run(self):
        response = self.data_get_index()
        self.parse_data_index(response)
        # print(response)


if __name__ == '__main__':
    Novel = novel_data_get()
    Novel.run()

三,结果展示

这里我们爬取太多,简单爬取一点点就暂停了

在这里插入图片描述

在这里插入图片描述

最后发现可以正常获取到小说的所有内容。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大杯奶绿加少冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值