序
#### 做了好久的爬虫+少量web,突然开始专门做 web 开发稍微有点不太适应,毕竟比起来爬虫相对还是稍稍有点无聊的,
但是又不想荒废了自己的爬虫,就准备写点关于爬虫的东西,把以前用过的东西都再过一边,
毕竟感觉爬虫跟 web 没有太大的区别,并发,缓存,分布式,消息队列......
-
言归正传
- 之所以爬取妹子图,一是因为简单方便,比较适合做项目展示,写博客不就是为了展示么?
- 目前就是准备先完整的爬取,再并发(多进程+多线程 or 多线程+协程(asyncio)), 全站爬取(深度优先 or 广度优先), 数据解析(清洗?), 数据去重(redis), 数据储存(MongoDB, Mysql, csv, excel), 定时更新(crontab), 增量爬取....
- 再三声明:本次爬取,会分别使用 requests + scrapy 爬取, 并稍微有点深度的解析 scrapy 框架使用, 并带领喜欢爬虫,以及想要学习爬虫的同学缓缓深入, 爬虫的天堂!
- 在本连载连载期间, 会分别对这些爬虫中所要使用的类库以及工具的重要部分做专门的实例讲解,并单独开一篇文章专门讲解!
- 别急别急,慢慢来。。。。
- 开发环境: win10, Python3.6, fidder, Pycharm
- 开发主要工具库: Requests, BeautifulSoup, Xpath, re, scrapy
1. 爬取妹子第一步:浏览并分析目标网站结构
目的: 搜索目标数据所在,分析网站结构,设定合理的爬取方案,这块主要是确定行动方案,其他的后面再说。
- 进入该网站首页, 看到该网站总共有 8 个大分类, 也就是说我们爬取的数据主要就是这么几个大的分类,首页跟每日更新可以自动过滤.毕竟我们后面也是需要分类的,首页跟每日更新,没有明确的确定分类, 也就是说我们只需要在意中间 6 个即可.如下图所示:
再往下看,会发现在这 6 个分类里面, 都有总页数,可以确定每个分类需要获取的总页数, 并且发现街拍跟自拍这两项跟其他的分类不一样, 这两个直接每个大分类下面都是完整的照片, 而另外四个分类下面, 是有若干个小标题, 也就是说, 这两个分类没有下一层;
接下来点击剩下的四个分类的任意小标题进入, 发现我们要的图片, 就在这里啊!哇咔咔.....
在这里你会发现,这每个标题就是一个组图,这个下面的总页数就是每个组图的照片数量;也就是说图片的链接就是在这个页面获取到的,这就是我们获取图片的地方; 至此,网页结构分析完毕。
总结:爬虫大致的过程就是 首页—>获取到分类链接->循环分类->获取每个分类的总页数->循环总页数->获取每个页面的组图主题以及每个组图的总页数->获取图片
2.爬取妹子第二步:分析网站 url 结构 跟 请求
- 一般网页请求都是 http,https 请求, 抓包工具最合适的是 fidder , 谁要是说花瓶的话,我肯定要喷他的,要是说大鲨鱼,我也会喷他,毕竟他们都不够合适啊;
当然, chrome 的 f12 也是抓包分析的利器, F12 适合简单的分析,分析下简单的 url 结构还是可以的, 一般的网站 F12 即可快速搞定;
- fidder 抓包原理: fidder 启动后建立一个本地代理服务器,类似 vpn ,默认监听127.0.0.1:8888, 拦截并转发请求;
- 关于 fiddler 的抓包方法,以及配置使用什么的, 由于本人太懒,就不打算描述了,看家尽可 百度谷歌必应, 一大把的教程; so easy....
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。