漫画源怎么制作(今天带你薅羊毛,用Python采集某漫画网站VIP漫画内容!)

wufei123 发布于 2023-11-26 阅读(457)

前言最近身边很多人都迷上了漫画,我想应该就跟当年我们90后喜欢看小说是一样的吧,所以今天给大家带来的爬虫教程就是采集某站漫画内容(vip的也可以哦)

环境[环境使用]:Python 3.8 Pycharm[模块使用]:requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块

整个流程的爬虫思路爬虫基本思路流程: 一. 数据来源分析:1. 明确需求: - 明确采集的网站是什么?https://www.mkzhan.com/208707/ - 明确采集的数据是什么?

- 漫画内容 - 漫画名字/漫画章节名字2. 通过开发者工具, 进行抓包分析 先分析一章漫画内容, 然后再分析如何采集多章漫画内容

- 打开开发者工具: F12 / 鼠标右键点击检查选择network - 刷新网页: 让本网页的数据内容重新加载一遍 - 选择Img: 可以很快速找到漫画图片链接

漫画图片链接: https://content.mkzcdn.com/image/20201217/5fdac66a426e9-1500x2220.jpg!page-800

-x?auth_key=1673266345-0-0-bf404c127d44841254daa3e26a3300bb - 搜索关键字: 可以直接搜索相关数据内容来自于哪里 漫画图片链接集合数据包:

https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=488210&comic_id=208707&format=1&quality=1&sign=

5a5b72c44ad43f6611f1e46dd4d457bf&type=1&uid=61003965https://comic.mkzcdn.com/chapter/content/v1/?chapter_id=

488211&comic_id=208707&format=1&quality=1&sign=5a5b72c44ad43f6611f1e46dd4d457bf&type=1&uid=61003965 - 实现多章漫画内容采集 ---> 分析多章漫画集合数据包链接变化规律

通过对比: 主要改变参数: 章节ID --> 只要获取所有漫画章节ID就可以获取所有漫画内容了 --->无论是什么ID大部分情况, 都可以在目录页面找到<---

请求目录页url:https://www.mkzhan.com/208707/找漫画图片链接 --> 漫画图片合集链接 ---> 主要改变参数章节ID ---> 漫画目录页面获取二. 代码实现步骤

- 获取章节ID/章节名字/漫画名字:1. 发送请求, 模拟浏览器对于url地址发送请求 请求链接: 漫画目录页url https://www.mkzhan.com/208707/2. 获取数据, 获取服务器返回响应数据

开发者工具: response3. 解析数据, 提取我们想要的数据内容 章节ID/章节名字/漫画名字- 获取漫画图片链接:4. 发送请求, 模拟浏览器对于url地址发送请求

请求链接: 漫画合集链接 https://comic.mkzcdn.com/chapter/content/v1/?chapter_id={章节ID}&comic_id=208707&format=

1&quality=1&sign=5a5b72c44ad43f6611f1e46dd4d457bf&type=1&uid=610039655. 获取数据, 获取服务器返回响应数据 开发者工具: response

6. 解析数据, 提取我们想要的数据内容 - 漫画图片链接7.保存数据完整代码"""# 请求链接 url = https://www.mkzhan.com/208707/# 伪装模拟

headers = { # user-agent 用户代理, 表示浏览器基本身份信息 Chrome 浏览器名字 101.0.0.0 浏览器版本 Windows 电脑系统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=url, headers=headers)"""2.获取数据, 获取服务器返回响应数据开发者工具: response网页源代码--> 获取响应的文本数据 response.text

3.解析数据, 提取我们想要的数据内容章节ID/章节名字/漫画名字css选择器: 根据标签属性提取数据内容 了解 1 不会 2-要看一下数据所对应的标签是什么"""# 把获取下来html字符串数据内容, 转换成可解析对象

selector = parsel.Selector(response.text) #

# 提取漫画名字name = selector.css(.de-info__box .comic-title::text).get()# 自动创建文件夹 以漫画名字作为文件夹名file = f{name}\\

ifnot os.path.exists(file):os.mkdir(file)# 第一次提取所有li标签, 返回是对象, 我不需要提取li标签里的内容lis = selector.css(.chapter__list .chapter__list-box .chapter__item)

# 如何一个一个提取列表当中元素? for循环遍历forli in list(reversed(lis)):"""a::attr(data-chapterid) --> 提取a标签里面data-chapterid属性

a::text --> 提取a标签里面文本内容get()获取第一个标签里面数据内容getall获取所有标签内容css/xpath/re三个每一个解析方法在系统课程都是2.5个小时的内容 理论+实践案例"""

# 提取章节ID +为什么加的意思chapter_id = li.css(a::attr(data-chapterid)).get() # 提取章节名字chapter_title = li.css(a::text).getall()[-1].strip()

"""4.发送请求, 模拟浏览器对于url地址发送请求请求链接: 漫画合集链接 https://comic.mkzcdn.com/chapter/content/v1/?chapter_id={章节ID}&comic_id=208707&format=1&quality=1&sign=5a5b72c44ad43f6611f1e46dd4d457bf&type=1&uid=61003965

5.获取数据, 获取服务器返回响应数据开发者工具: responseresponse.json()获取响应字典json数据6.解析数据, 提取我们想要的数据内容-漫画图片链接根据键值对取值--> 根据冒号左边的内容[键], 提取冒号右边的内容[值]

""" # 请求链接: 漫画集合链接 --> f{} 字符串格式化方法, 相当于, 把chapter_id传入link这段字符串当中link = fhttps://comic.mkzcdn.com/chapter/content/v1/?chapter_id={chapter_id}&comic_id=208707&format=1&quality=1&sign=5a5b72c44ad43f6611f1e46dd4d457bf&type=1&uid=61003965

# 发送请求json_data = requests.get(url=link, headers=headers).json()num = 1print(chapter_title) # for循环遍历, 一个一个提取列表元素

forindex in json_data[data][page]: # 字典取值image = index[image]"""7.保存数据 --> 对于图片链接发送请求, 并且获取二进制数据

response.content--> 获取响应二进制数据"""img_content = requests.get(url=image, headers=headers).contentwithopen(file + chapter_title + str(num) + .jpg, mode=wb) as f:

f.write(img_content)num+= 1print(image)效果演示

你学会了吗?代码已备好,需要自取哦!

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。