Python实现番茄小说内容下载

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

环境使用:

  • Python 3.8

  • Pycharm

模块使用:

  • requests --> pip install requests

  • re

  • parsel

代码展示:

导入模块

# 导入数据请求模块
import requests
# 导入正则表达式模块
import re
# 导入数据解析模块
import parsel
from prettytable import PrettyTable
from tqdm import tqdm

模拟浏览器

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
while True:
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
    }
    """实现搜索下载功能"""
    key = input('请输入你要下载的小说: 输入00退出 ')
    if key == '00':
        break
    tb = PrettyTable()
    tb.field_names = ['序号', '书名', '作者', '类型', '最新章节', 'ID']
    num = 0
    info = []
    print('正在检索中, 请稍后.....')
    for page in tqdm(range(30)):
    
        search_url = 'https://fanqienovel.com/api/author/search/search_book/v1'
        # 请求参数
        search_params = {
            'filter': '127,127,127,127',
            'page_count': '10',
            'page_index': page,
            'query_type': '0',
            'query_word': key,
        }
        # 发送请求
        search_data = requests.get(url=search_url, params=search_params, headers=headers).json()
        for i in search_data['data']['search_book_data_list']:
            book_name = i['book_name']
            author = i['author']
            book_id = i['book_id']
            category = i['category']
            last_chapter_title = i['last_chapter_title']
            dit = {
                'book_name': book_name,
                'author': author,
                'category': category,
                'last_chapter_title': last_chapter_title,
                'book_id': book_id,
            }
            info.append(dit)
            tb.add_row([num, book_name, author, category, last_chapter_title, book_id])
            num += 1

    print(tb)
    book = input('请输入你要下载小说序号: ')
"""获取小说名字以及章节ID"""
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
    # 请求链接
    url = f'https://fanqienovel.com/page/{info[int(book)]["book_id"]}'
    # 发送请求
    response = requests.get(url=url, headers=headers)
    # 获取网页源代码  html字符串数据
    html_data = response.text
    # 正则提取小说名
    name = re.findall('<div class="info-name"><h1>(.*?)</h1', html_data)[0]
    # 把获取到html字符串数据,转成可解析对象
    selector = parsel.Selector(html_data)
    # css选择器提取小说名
    css_name = selector.css('.info-name h1::text').get()
    # 提取章节ID
    href = selector.css('.chapter-item a::attr(href)').getall()
    print(f'{name}, 小说正在下载, 请稍后....')
    # for循环遍历提取列表里面元素
    for index in tqdm(href):
        # 字符串分割提取ID -> 列表
        chapter_id = index.split('/')[-1]
        # 构建小说数据链接地址
        link = f'https://novel.snssdk.com/api/novel/book/reader/full/v1/?device_platform=android&parent_enterfrom=novel_channel_search.tab.&aid=2329&platform_id=1&group_id={chapter_id}&item_id={chapter_id}'
        # 对于内容链接地址发送请求, 获取数据
        json_data = requests.get(url=link, headers=headers).json()['data']['content']
        # 提取章节标题名
        title = re.findall('<div class="tt-title">(.*?)</div>', json_data)[0]
        # 提取小说内容 -> 列表合并成字符串
        content = '\n'.join(re.findall('<p>(.*?)</p>', json_data))
        # 保存小说内容
        with open(f'{name}.txt', mode='a', encoding='utf-8') as f:
            """
            第一章 章节名
            小说内容
            第二章 章节名
            小说内容
            """
            f.write(title)
            f.write('\n')
            f.write(content)
            f.write('\n')
"""
解析数据方法:
    re: 直接对于字符串数据进行解析提取
        - re.findall()
            返回列表
    css: 根据标签属性提取数据
        - 找到对应数据标签位置
            .info-name h1 -> 定位class类名为info-name下面h1标签
    xpath: 根据标签节点提取数据
        xpath_name = selector.xpath('//*[@class="info-name"]/h1/text()').get()
"""

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
可以使用Python中的第三方库来实现word文档的下载。你可以使用python-docx库来创建和编辑word文档,然后使用requests库来下载文档内容。以下是一个简单的示例代码: ```python from docx import Document import requests # 创建一个新的word文档 document = Document() # 向文档中添加内容 document.add_paragraph('这是一个示例文档') # 保存文档 document.save('example.docx') # 下载文档 url = 'http://example.com/example.docx' response = requests.get(url) # 将下载内容保存为本地文件 with open('downloaded.docx', 'wb') as file: file.write(response.content) ``` 在这个示例中,我们首先使用python-docx库创建了一个新的word文档,并向其中添加了一段内容。然后,我们使用requests库发送一个GET请求来下载文档的内容,并将下载内容保存为本地文件。 请注意,你需要先安装python-docx和requests库,可以使用pip命令来安装它们。 希望这个示例能够帮助到你实现word文档的下载。 #### 引用[.reference_title] - *1* *3* [Python-生成word、docs文件[生成word文档]](https://blog.csdn.net/qq_37746855/article/details/115271750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python实现某du内容下载, 保存到word文档](https://blog.csdn.net/aliYz/article/details/128343553)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值