Python丨听说这个地方的漫画不错,只用40行代码,给它全部爬下来

前因后果

公司新来的小姐姐,超级喜欢看漫画,天天给我介绍,好烦~

现在是2022年9月15日16点30,于是我决定, 五点下班前写个代码把她说的漫画全部爬下来,应付一下~

再发篇文章揭露她的罪恶,嘿嘿~
Python丨听说这个地方的漫画不错,只用40行代码,给它全部爬下来

准备事项

环境使用

Python 3.8
Pycharm 2021.2版本

 

模块使用

import requests >>> # 数据请求模块  pip install requests
import re  # 正则模块
import os   #  文件操作模块

 

基本流程思路

一. 数据来源分析

1. 确定自己需求:
    采集那个网站上面什么数据内容
    https://www.dongmanmanhua.cn 网址自己补全一下,实在不知道的话文末见。
正常访问流程:
    1. 选中漫画 ---> 目录页面 <请求列表页面 获取所有章节链接>
    2. 选择一个漫画内容 ---> 漫画页面 <请求章节链接, 获取所有漫画内容url>
    3. 看漫画内容 <保存数据, 漫画图片内容保存下来>

分析流程: <开发者工具进行抓包分析>

    1. 查看漫画图片url地址, 是什么样子
        https://cdn.dongmanmanhua.cn/166052717362315191169.jpg?x-oss-process=image/quality,q_90
    2. 分析url地址在哪里
        通过搜索功能 <开发者工具>  166052717362315191169
        https://www.dongmanmanhua.cn/BOY/moutianchengweimoshen/116-%E7%AC%AC43%E7%AB%A0-%E5%A2%9E%E5%8A%A0%E6%88%98%E6%96%97%E5%8A%9B%E5%90%A73/viewer?title_no=1519&episode_no=116

F12打开开发者工具, 进行刷新网页
点击Img
通过对比分析请求url地址变化 —> 漫画内容都是来于章节链接里面

二. 代码实现步骤过程

1. 发送请求 ---> 对于目录页面发送请求
2. 获取数据 ---> 服务器返回响应数据 <网页源代码数据>
3. 解析数据 ---> 提取想要章节链接 / 漫画名字 / 章节名字
4. 发送请求 ---> 对于章节链接发送请求
5. 获取数据 ---> 服务器返回响应数据 <网页源代码数据>
6. 解析数据 ---> 提取想要图片链接
7. 保存数据 ---> 保存到本地

效果展示

不知不觉都四千多张图了,大家别一窝蜂去爬了,等下网站崩了就不好了~

Python丨听说这个地方的漫画不错,只用40行代码,给它全部爬下来

代码展示

发送请求

def 自定义函数关键字
get_response: 自定义函数名字

模拟浏览器对于url地址发送请求
param html_url: 自定义形式参数
return: 响应对象

def get_response(html_url):
    # 请求头 headers 模拟浏览器 ---> 字典数据类型, 构建完整键值对 <伪装请求头可以复制粘贴>
    headers = {
        # referer 防盗链 告诉服务器请求url地址 是从哪里跳转过来
        'referer': 'https://www.dongmanmanhua.cn/',
        # User-Agent  浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 通过数据请求模块 去发送请求
    response = requests.get(url=html_url, headers=headers)
    # return 返回 ---> 在代码里面 调用 get_response  函数 这个函数, 会给我们返回 response 这个数据
    return response

 

获取章节链接 / 漫画名字 / 章节名字

def get_info(html_url):
    # 调用发送请求函数
    html_data = get_response(html_url).text
    # re正则提取数据
    name = re.findall("title_title: '(.*?)',", html_data)[0]  # 提取漫画名字
    chapter_url_list = re.findall('data-sc-name="PC_detail-page_related-title-list-item".*?href="(.*?)"', html_data, re.S)
    title_list = re.findall('<span class="subj"><span>(.*?)</span></span>', html_data)
    return name, chapter_url_list, title_list

 

获取漫画url地址

def get_img_url(chapter_url):
    # 调用发送请求函数
    chapter_data = get_response(chapter_url).text
    # re获取所有漫画图片内容
    img_url_list = re.findall('alt="image" class="_images _centerImg" data-url="(.*?)"', chapter_data)
    # 403 Forbidden 没有访问权限  ---> 通过代码得到数据 请求头里面加防盗链
    return img_url_list

 

保存数据

def save(name, title, img_url):
    """
    :param name: 漫画名
    :param title: 图片名
    :param img_url: 图片链接
    :return:
    """
    # 自动创建文件夹
    file = f'img\\{name}\\'
    # 如果没有这个文件夹的话
    if not os.path.exists(file):
        # 自动创建文件夹
        os.makedirs(file)
    # 对于图片链接发送请求 获取二进制数据
    img_content = get_response(img_url).content
    # file + title  保存地方以及保存文件名 mode 保存方式
    with open(file + title, mode='wb') as f:
        # 写入数据
        f.write(img_content)
    print(name, title)

 

主函数

整合上面所有内容

def main(page):
    """
    完整源码及视频讲解再这个群 279199867 自取即可
    :param page:
    :return:
    """
    # 目录页面
    link = f'https://www.dongmanmanhua.cn/BOY/moutianchengweimoshen/list?title_no=1519&page={page}'
    # 调用获取章节链接 / 漫画名字 / 章节名字 函数
    name, chapter_url_list, title_list = get_info(link)
    # for循环遍历 提取数据
    for chapter_url, chapter_title in zip(chapter_url_list, title_list):
        # 字符串拼接
        chapter_url = 'https:' + chapter_url
        # 获取漫画内容
        img_url_list = get_img_url(chapter_url)
        # for循环遍历 提取数据
        num = 1
        for img_url in img_url_list:
            title = chapter_title + str(num) + '.jpg'
            # 调用保存数据函数
            save(name, title, img_url)
            # 每次循环 +1
            num += 1

 

函数入口, 当你代码被当作模块调用的时候, 下面的代码不执行。

if __name__ == '__main__':
    for page in range(12, 0, -1):
        main(page)

 

好了,今天的分享就到这喽,完整源码及视频讲解下方名片自取即可~

最后分享一套Python教程:Python实战100例

希望对你有所帮助哈~

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python丨听说这个地方的漫画不错,只用40行代码,给它全部爬下来 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 【Python】pyqt6入门到入土系列,非常详细…

    最近真的是运气不好,国庆前一天,隔壁小区有人中招了,结果国庆出不了门,好不容易国庆结束了,准备上班,结果小区又有个叼毛中招了,搞得我直接国庆放了半个月,还只能在家过,没事干只能这里写写,那里弄弄,于是今天就把存货分享给大家了~ 一、什么是PyQt6? 简单介绍一下PyQt6 1、基础简介 PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Q…

    Python开发 2023年4月2日
    00
  • Python实现将文本数据批量导入Excel表格,并按格式保存

    本文实现用Python将文本文件自动保存到Excel表格里面去。 需求 将锦江区.txt 文件中的数据整理到 锦江区.xlsx 的 锦江区 sheet ; 将推荐菜字段丢弃(保留前面14个字段) ; 将人均消费中的 ¥ 符号去掉,如果价格为空整条数据都不要; 成果展示 txt文本部分数据 效果 稍微打了点码,尊重一下别人。 代码展示 import openp…

    Python开发 2023年4月2日
    00
  • Python输出指定时间间隔内的日期

    兄弟们,今天我们来试试用Python输出指定时间间隔内的日期~ 涉及知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 使用的模块 import platform import datetime # 我还给大家准备了这些资料:2022最新Python视频教程、Python电子书10个G(涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题…

    Python开发 2023年4月2日
    00
  • 快过年了,Python实现12306查票以及自动购票….

    马上就要过年了,听说还有人买不到票? 不要慌,今天咱们来用Python做一个自动查票抢票的脚本,24小时抢票,谁抢的过你!   准备工作 环境 Python 3.8 Pycharm 插件 谷歌浏览器驱动 模块 需要安装的第三方模块,直接pip安装即可。 requests # 数据请求模块 prettytable # 打印好看一些 selenium # 模拟人…

    Python开发 2023年3月31日
    00
  • 聊天尬住了?教你用Python一键获取斗图表情包,从此摇身变海王

    很多兄弟在聊天上没有下太多的功夫,导致自己聊天的时候很容易尬住,然后就不知道聊啥了,这时候合适表情包分分钟就能救场,但是一看自己收藏的表情包,好家伙,两只手都数得过来。 所以今天来给兄弟们分享一下爬取表情包的代码,再也不用尬聊了! 给大家看看我朋友的尬聊场面     本次目标 网站:发表情 网不好 ,没加载出来,表弟又在当老六,看不该看的抢我网速!!! 使用…

    Python开发 2023年3月31日
    00
  • Python制作炫酷的个人足迹地图

    用Python来绘制自己的个人足迹地图, 精确到市级别。 首先我们需要安装以下Python的第三方模块: echarts-china-cities-pypkg==0.0.9 echarts-china-provinces-pypkg==0.0.3 pyecharts==1.6.2 PyYAML==5.3.1   本项目的完整结构如下: 我们在项目中采用YAM…

    Python开发 2023年4月2日
    00
  • Python将多个文件多列进行关联

    兄弟们,温故而知新,可以为师矣。 就是说,我们所学过的东西,要去多复习,这样才能总结出属于自己的理解,这样就可以做老师了。 但是我以为的我以为,后面可以改成,将自己所学及所领会的教给别人,这样才能更加记忆深刻。 今日内容:Python将多个文件多列进行关联 知识点 文件读写 基础语法 异常处理 循环语句 字符串处理 # 我还给大家准备了这些资料:Python…

    Python开发 2023年4月2日
    00
  • Python告别pip手动安装模块,实现全自动安装第三方库,彻底解放你的双手

    兄弟们,为了帮助大家更加高效的摸鱼,今天分享一个骚操作,Python自动安装第三方库! 为了体现小编在懒上的造就,今天再分享一个骚操作:Python自动安装第三方库,全自动不需要你动! pip手动安装 一说Python要安装哪个模块,我们第一反应,win+r输入cmd,pip instll 安装~ 没毛病,必须的! 但是如果换电脑了(土豪才换电脑,我都换朋友…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部