python爬虫简单爬取一个免费的小说网站

本文详细介绍了如何使用Python的requests和BeautifulSoup库爬取一个名为munpia.com的免费小说网站,通过模拟请求获取小说内容并保存到txt文件中。

python爬虫爬取一个免费的小说网站

首先,我们导入需要的包

import requests
from bs4 import BeautifulSoup
import re
import json

创建header头

headers={
        # 浏览器基本信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.69'
    }

创建data参数,保证在点击下一面时得到要获取的数据

在这里插入图片描述
在这里插入图片描述

我们观察刷新后的两张图片,可以看出最后两项的数据不同,也就是data参数

  data = {
        'ajx': '1',
        'menu': 'novel',
        'id': '372513',
        'action': 'intro',
        'order': 'date',
        'bookmark': '',
        'page':f'{2+i}',
        '_':f'{1698588100098+i}'
    }

调用request函数并用json格式保存

在这里插入图片描述
url在表头获取

res=requests.get(f'https://mm.munpia.com/?ajx=1&menu=novel&id=372513&action=intro&order=date&bookmark=&page={i+2}&_={1698588100098+i}',headers=headers,data=data)
    # print(res.text)
    json_data = json.loads(res.text)

使用for循环从数组中获取每个子网址的ID,拼接网址,利用select获取需要的小说内容,最后写入txt文件中。
在这里插入图片描述

   for item in json_data['list']:
        url='https://mm.munpia.com/?menu=novel&action=view&id=372513&entry_id='+(item['neSrl'])
        print(url)
        res = requests.get(url)
        bs = BeautifulSoup(res.content, 'html.parser')
        title = bs.select('.heading_fiction h2')[0].text
        title = title.strip()
        print(title)
        f = open(f'{title}.txt', mode="w", encoding="UTF-8")
        f.write(title)
        bodys = bs.select('#view_section p')
        for body in bodys:
            body = body.get_text()
            f.write(body)

以下是完整的代码

import requests
from bs4 import BeautifulSoup
import re
import json
headers={
        # 浏览器基本信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.69'
    }
for i in range(0,5):
    data = {
        'ajx': '1',
        'menu': 'novel',
        'id': '372513',
        'action': 'intro',
        'order': 'date',
        'bookmark': '',
        'page':f'{2+i}',
        '_':f'{1698588100098+i}'
    }
    res=requests.get(f'https://mm.munpia.com/?ajx=1&menu=novel&id=372513&action=intro&order=date&bookmark=&page={i+2}&_={1698588100098+i}',headers=headers,data=data)
    # print(res.text)
    json_data = json.loads(res.text)
    for item in json_data['list']:
        url='https://mm.munpia.com/?menu=novel&action=view&id=372513&entry_id='+(item['neSrl'])
        print(url)
        res = requests.get(url)
        bs = BeautifulSoup(res.content, 'html.parser')
        title = bs.select('.heading_fiction h2')[0].text
        title = title.strip()
        print(title)
        f = open(f'{title}.txt', mode="w", encoding="UTF-8")
        f.write(title)
        bodys = bs.select('#view_section p')
        for body in bodys:
            body = body.get_text()
            f.write(body)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

逆向爱好者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值