环境使用:
-
Python 3.10
-
Pycharm
模块使用:
-
requests >>> pip install requests 数据请求模块
-
parsel >>> pip install parsel 数据解析模块
模块安装:
win + R 输入cmd 输入安装命令 pip install 模块名
例如: requests >>> pip install requests
爬虫实现的基本流程
一. 数据来源分析
-
明确需求
明确采集的网站以及数据内容
-
网址: https://www.mkzhan.com/209412/1004107.html
-
数据: 漫画内容(41张图片)
-
-
抓包分析 (浏览器中进行操作)
通过浏览器自带开发者工具, 分析我们需要的数据内容在什么地方
-
开发开发者工具: F12 / 右键点击检查选择 network (网络)
-
刷新网页: 让网页数据内容重新加载一遍
-
找到图片链接: 过滤图片直接点击Img
-
通过关键字找到对应数据包: 存在一个数据包含了整章漫画内容数据 (41张图)
关键字: 使用图片链接中一段参数即可
-
数据包地址:
https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=1004107&comic_id=209412&format=1&quality=1&sign=80cc6ea2ef3e7911cdaef9199d74c66a&type=1&uid=69982021
二. 代码实现步骤
-
发送请求
模拟浏览器对于url地址发送请求
-
模拟浏览器 (可以直接复制)
-
请求网址:
https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=1004107&comic_id=209412&format=1&quality=1&sign=80cc6ea2ef3e7911cdaef9199d74c66a&type=1&uid=69982021
-
发送请求: requests模块 根据开发者工具提示请求方法去发送即可
-
代码内容
导入模块
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:926207505
'''
import requests
import os
import parsel
import re
“”"
发送请求函数
“”"
def GetResponse(url):
# 模拟浏览器 (伪装)
headers = {
# User-Agent 用户代理, 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, headers=headers)
# 返回值
return response
“”"
获取图片链接
“”"
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:926207505
'''
def GetImg(ID):
# 请求网址
url = f'https://comic.mkzcdn.com/chapter/content/v1/?chapter_id={ID}&comic_id=209412&format=1&quality=1&sign=80cc6ea2ef3e7911cdaef9199d74c66a&type=1&uid=69982021'
# 发送请求
response = GetResponse(url=url)
# 获取数据内容
JsonData = response.json()
# 解析数据 1. 提取图片链接所在列表 字典取值 (基础语法)
pages = JsonData['data']['page']
"""
# 创建空列表
ImgList = []
# 2. 提取列表里面元素, 并且提取图片链接
for page in pages:
# 提取图片链接
img = page['image']
# 把图片链接添加到 ImgList 列表里面
ImgList.append(img)
"""
# 列表推导式
ImgList = [page['image'] for page in pages]
# 返回内容
return ImgList
“”"
保存数据函数
“”"
def Save(img, title):
# 发送请求 + 获取数据内容
ImgContent = GetResponse(url=img).content
# 程序自动创建文件夹
if not os.path.exists('img'): # 判断如果没有
# 自动创建文件夹
os.mkdir('img')
# 指定了保存文件夹 -> img
with open(f'img\\{title}.jpg', mode='wb') as f:
f.write(ImgContent)
“”"
获取漫画信息: 名字 / 章节名 / 章节ID
“”"
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:926207505
'''
def GetInfo():
# 请求网址
link = 'https://www.mkzhan.com/209412/'
# 发送请求 + 获取数据
HtmlData = GetResponse(url=link).text
# 解析数据
selector = parsel.Selector(HtmlData)
# 提取名字
name = selector.css('.de-info__box .comic-title::text').get()
# 提取章节名 + 章节ID所在li标签 (所有)
lis = selector.css('.chapter__list .chapter__list-box .chapter__item')
# 创建空列表
TitleList = []
ChapterIdList = []
# for循环遍历, 二次提取
for li in lis:
# 提取章节名字
title = li.css('a::text').getall()[-1].strip()
# 提取章节ID
chapter_id = li.css('a::attr(data-chapterid)').get()
TitleList.append(title)
ChapterIdList.append(chapter_id)
return name, TitleList, ChapterIdList
def main():
# 获取漫画信息
name, TitleList, ChapterIdList = GetInfo()
for old_title, chapter_id in reversed(list(zip(TitleList, ChapterIdList))):
# 定义函数需要调用函数
ImgList = GetImg(ID=chapter_id) # 返回图片列表
print('正在保存: ', old_title)
# 定义标题变量
num = 1
# 替换特殊字符
title = re.sub(r'[\\/:*?"<>|]', '', old_title)
for img in ImgList:
ImgName = f'{title}-{num}'
# 调用保存函数
Save(img=img, title=ImgName)
num += 1
if __name__ == '__main__':
main()
尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。
读者福利:如果大家对Python感兴趣,这套python学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论
④ 20款主流手游迫解 爬虫手游逆行迫解教程包
⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解
⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解
⑦ 超300本Python电子好书,从入门到高阶应有尽有
⑧ 华为出品独家Python漫画教程,手机也能学习
⑨ 历年互联网企业Python面试真题,复习时非常方便
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
这份完整版的Python全套学习资料已经上传网盘,朋友们如果需要可以点击下方微信卡片免费领取 ↓↓↓【保证100%免费】