您当前的位置: 首页 >  Python

魔王不会哭

暂无认证

  • 4浏览

    0关注

    149博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【python爬虫】喜欢看小说又手头紧的小伙伴一定要看这篇文章,带你一步步制作一个小说下载器

魔王不会哭 发布时间:2021-11-04 16:43:58 ,浏览量:4

前言 嗨喽!这里是魔王,欢迎来到这篇文章。小说想必大家非常熟悉, 无论上班、在家还是干什么只要空闲,许多人都会看看小说让自己的精神世界解解馋!但是有时候叭,没钱!流量贵!免费看书软件一大堆广告!又是一大难题,哎!生活!那么今天我就为大家带来一个好案例!用python制作爬取小说下载器!

案例:

Python实现全网小说下载器 请添加图片描述

基本开发环境
  • python 3.8
  • pycharm
相关模块的使用

requests >>> 数据请求模块 pip install requests parsel >>> 数据解析模块 pip install parsel >>> 这个模块不支持 3.9,最好是3.8或3.6

安装方法

win + R 输入 cmd 然后点击确定 在输入 安装命令 如果出现红色报错, 网络连接超时 是需要切换国内的镜像源 黄色是警告 提示你可以更新pip版本

黄色在这里插入图片描述

需要Python环境安装包/pycharm激活码/使用教程/学习资料/视频教程的小伙伴可以私聊我哦! 大概思路

如果爬取的是小说内容

– 小试牛刀 爬取一章小说 – 爬取一本小说内容 – 搜索小说名字 然后就可以下载相应的小说内容

如果你想要的通过Python代码取进行下载小说

– 如何获取这些数据内容 >>> 小说章节标题 以及 小说内容 (用Python代码模拟浏览器 发送请求) – 弄一个下载进度条显示 – 控制爬取的速度 就不会爬蹦

爬虫基本步骤
  • 发送请求
  • 获取数据
  • 解析数据, 目标 获取 小说章节标题 以及 小说内容
爬取的网址:[https://www.biqugee.com/] 代码步骤如下: 一. 发送请求函数"
def get_response(html_url):
    response = requests.get(html_url)
    return response
二. 获取所有章节url地址
def get_novel_url(html_url):
    response = get_response(html_url)
    selector = parsel.Selector(response.text)
    href = selector.css('#list dd a::attr(href)').getall()
    return href
三. 获取小说的内容
def get_novel_content(html_url):
    response = get_response(html_url)
    selector = parsel.Selector(response.text)
    # 才可以调用 selector 对象里面 css选择器方法 进行解析提取数据
    title = selector.css('.bookname h1::text').get() # 这个是获取一个 小说章节标题
    content_list = selector.css('#content::text').getall() # 获取所有
    content = '\n'.join(content_list)  # 小说内容
    novel_content = [title, content]
    return novel_content
四. 保存数据
def save(name, title, content):
    with open(name + '.txt', mode='a', encoding='utf-8') as f:
        f.write(title)
        f.write('\n')
        f.write(content)
        f.write('\n')
五. 主函数 整合所有函数内容
def main(html_url):
    response_1 = get_response(html_url)
    selector = parsel.Selector(response_1.text)
    # 才可以调用 selector 对象里面 css选择器方法 进行解析提取数据
    name = selector.css('#info h1::text').get()  # 这个是获取一个 小说章节标题
    href = get_novel_url(html_url) # 调用了获取小说章节url地址的函数
    for index in tqdm(href):
        index_url =  'https://www.biqugee.com' + index
        novel_content = get_novel_content(index_url) # 调用了获取小说内容函数
        save(name, novel_content[0], novel_content[1]) # 调用了  保存函数
六. 制作下载器
if __name__ == '__main__':
    key_world = input('请输入你要下载的小说名字: ')
    search_url = f'https://www.biqugee.com/search.php?q={key_world}'
    response_1 = get_response(html_url=search_url)
    select = parsel.Selector(response_1.text)
    divs = select.css('div.result-game-item-detail')
    lis = []
    if divs:
        for div in divs:
            novel_url = div.css('.result-item-title a::attr(href)').get().split('/')[-2]
            novel_name = div.css('.result-item-title a::attr(title)').get()
            author = div.css('.result-game-item-info p:nth-child(1) span:nth-child(2)::text').get()
            dit = {
                '小说名字': novel_name,
                '作者': author,
                '书ID': novel_url,
            }

            lis.append(dit)
        search_result = pd.DataFrame(lis)
        print(f'搜索到{len(search_result)}条数据内容, 结果如下: ')
        print(search_result)
        novel_num = input('请输入你要下载的小说序号: ')
        novel_id = lis[int(novel_num)]['书ID']
        url = f'https://www.biqugee.com/book/{novel_id}/'
        main(url)
    else:
        print('重新输入内容')
七. 最终效果

请添加图片描述 请添加图片描述

那么今天的文章就到这里啦,希望这篇文章能给大家带来帮助,有什么好的建议或希望出什么教程小伙伴们都可以评论区留言哦!我都会看哒~希望一起进步、加油
关注
打赏
1665385393
查看更多评论
立即登录/注册

微信扫码登录

0.1033s