宅男女生网爬虫

这一系列的爬虫,都是网上不存在,自己找到的感兴趣的网站进行分析爬取。

也当作自己的动手实践吧,GO!

爬取网页:百度搜索“宅男女神”,第一个搜索结果。

背景:

没有编程基础的金融学专业大三学生。
只通过 @静觅 的爬虫课程,学习了爬虫知识

愿景:

在明年下学期结束前能完成一个数据爬虫,分析,可视化,web为一体的项目。

目的:

爬取网站大量图片
对于抓取的图片进行分类保存

参考学习资料:

如何学习Python爬虫[入门篇]?(强烈推荐!十分有用!里面有关python学习线路很适合大众,爬虫的相关学习难度也很适中)
Python3 教程 | 菜鸟教程
快速上手 - Requests 2.18.1 文档
Beautiful Soup 4.2.0 文档

环境配置:

系统环境:WIN8
编译环境:Python3.5
所需库:requests、re、os、pymongo、Beatifulsoup、time
IDE:Pycharm

学前疑惑:

如何找到各个图片的地址接口
如何遍历图片地址,批量保存图片
如何保证爬虫能长期运行不中断

分析网站:(最重要一部分!)

作为一个爬虫新手,分析网站思路的学习是我之前学习过程中花费时间精力最大的部分。这次要爬取的网站,来自于百度搜索,宅男女神的第一个结果网站。首先打开F12,观察界面中各个图集的入口信息,发现href标签中带有信息/g/24699/,而后面这个五位数是决定图集不同的主要因素。而且,越是最新的图片,数字越大。网站是通过时间差异来给图集编号,那么只要我遍历所有编号,就能获得所有图片集地址信息了。通过手动测试发现,按顺序编号,不一定存在图集,所有需要一个函数来筛选出有效的详情图片集网址。

获得详情页地址以后,分析详情页。我们需要抓取,详情页中的标题,图片地址,图片个数。观察图片地址发现, https://t1.onvshen.com:85/gallery/25253/24581/s/030.jpg ,图片的来源格式类似于上面这个链接,同个图集下,除了结尾的三位数030不会改变,其他地方不变。通过获得图片集图片个数,确定有效图片范围,再通过获得图片集地址的固定要素,构造图片集内所有图片的获得链接。

获得图片链接后,只需要保存访问图片链接的response.content,即可实现图片下载保存。通过os库进行文件夹创建,分类保存。再设置格式,保存至MONGODB数据库

具体一分析,是不是发现挺简单的!虽然,在崔大视频里面很多爬虫的网站都带有一些难度,比如动态网站,今日头条,里面的图片链接信息就会比较隐蔽,需要多多发现才能找到。但是,这次的这个网站爬取难度还是非常低的,只需要思路清楚,接下来就是自己实现过程中的各种小问题的解决,多查百度,就能搞定了。

这个爬虫思路还有改善空间,比如说有效图片地址,可以单独设置一个py文件,去运行,保存的地址都是有效地址,就无需自己从10000遍历到30000这么多了。提取以后,遍历有效地址列表就好了。因为爬取量比较大,还可以加上多线程,加快运行速度。

——————————————————————————————————————

代码放在GIT,有需要的自取。

https://github.com/WuXingggg/shiny-spoon/blob/master/spider_meizi.py

如果未安装mongodb数据库,而只想要保存图片到本地,需要把main()中的save_to_mongo()删掉。

成果:(吐槽两句,之前竟然被举报,知乎说违反了法律法规,那还是低调一些吧。)

运行了几十分钟,就抓了5000多张图片。

运行久一些,整个网站所有图片你都能抓下来。

如果需要特别图片类型分类的话,可以写一个爬取网站中指定分类下图集链接,再遍历爬取。

再放上之前的爬虫文章,可以参照学习一下。

利用Requests+正则表达式爬取猫眼电影,学习全过程记录与体会。

零基础爬虫学习全记录2:今日头条指定搜索内容下的所有图集图片保存——图片采集小程序

零基础爬虫学习全记录3:利用selenium爬取淘宝商品的基本信息

你对你自己要求的的学习目标,完成了吗?

如果还未完成,如果你心动的话。

关注我知乎~

我会继续学习和总结,希望能给你带来一些帮助。

与大家共勉,继续努力!欢迎私信交流~

觉得这篇文章对你有帮助的话,帮忙点个赞~

这也是我动力的来源,谢谢各位。

这里有个Q群541809771,由 @路人乙 创建,群里有许多人正在学习的路上,欢迎各位前来讨论,互相监督,互相进步。群里每天都有人活跃哦~

最后,祝各位天天好心情~!

This blog is belong to 无小意
本文链接:https://wuxingggg.github.io/2017/12/22/第一篇/