本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
20 行代码,变身技术圈多肉小达人
用 Python 爬取 100G Cosers 图片
本篇博客目标
爬取目标
- 目标数据源:www.cosplay8.com/pic/chinaco…,又是一个 Cos 网站,该类网站很容易 消失 在互联网中,为了让数据存储下来,我们盘它。
使用的 Python 模块
- requests,re,os
重点学习内容
- 今日的重点学习,可放在详情页分页抓取上,该技巧在之前的博客中没有涉及,编写代码过程中重点照顾一下。
列表页与详情页分析
通过开发者工具,可以便捷的分析出目标数据所在的标签。
点击任意图片,进入详情页,得到目标图片为单页展示,即每页展示一张图片。
1 | html复制代码<a href="javascript:dPlayNext();" id="infoss"> |
同时获取列表页与详情页 URL 生成规则如下:
列表页
详情页
注意详情页首页无序号 1
,顾爬取获取总页码的同时,需存储首页图片。
编码时间
目标网站对图片进行了分类,即 国内 cos,国外 cos,汉服圈,Lolita,因此在爬取时可以对其进行动态输入,即爬取目标源自定义。
1 | python复制代码 |
上述代码首先基于用户的输入,生成目标网址,然后将目标网址一次传递到 get_list
函数中,该函数代码如下:
1 | python复制代码def get_list(url): |
通过正则表达式 <li><a href="(.*?)">
匹配列表页中所有详情页地址,并将其进行整体返回。
在 run
函数中继续增加代码,获取详情页图片素材,并对抓取到的图片进行保存。
1 | python复制代码def run(category, start, end): |
由于匹配到的详情页地址为相对地址,顾对地址进行格式化操作,生成完整地址。get_detail
函数代码如下:
1 | python复制代码def get_detail(url): |
上述代码核心逻辑已经编写到注释中,重点在 title
正则匹配部分,初始编写正则表达式如下:
1 | perl复制代码<title>(.*?)-Cosplay中国</title> |
后续发现不能全部匹配成功,修改为如下内容:
1 | perl复制代码<title>(.*?)-Cosplay(中国|8)</title> |
,缺少的 save_img
函数代码如下:
1 | python复制代码def save_img(path, title, first_img, index): |
本文转载自: 掘金