代码已经更新,网站增加了一些headers的反爬限制,简单修改后就能继续使用。
现在的代码,把mongodb保存部分#掉了,直接运行就能保存图片
如果保存图片报错,建立一个文件夹F:\spider\picture\zhainan2\,建立到最后这个zhainan2文件夹,下载的图片都会保存在这里,需要修改的话,在代码中找到相应部分更改。
——————————————————————————————
这一系列的爬虫,都是网上不存在,自己找到的感兴趣的网站进行分析爬取。
也当作自己的动手实践吧,GO!
爬取网页:百度搜索“宅男女神”,第一个搜索结果。
(收藏数是点赞数的十倍!这你敢信?顺便求个赞吧,哈。)
目的:
- 爬取网站大量图片
- 对于抓取的图片进行分类保存
参考学习资料:
- 如何学习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这么多了。提取以后,遍历有效地址列表就好了。因为爬取量比较大,还可以加上多线程,加快运行速度。
代码已经是纯傻瓜式,只要有requests和beautifulsou这两个库,就能开始自动运行保存。
如果要自己修改爬取范围,贼修改代码最上方的start和end,自己打开网站找到需要爬取的图集,或者直接遍历从10000-30000之间。
成果:(吐槽两句,之前竟然被举报,知乎说违反了法律法规,那还是低调一些吧。)
运行了几十分钟,就抓了5000多张图片。
运行久一些,整个网站所有图片你都能抓下来。
image image.gif
如果需要特别图片类型分类的话,可以写一个爬取网站中指定分类下图集链接,再遍历爬取。
你对你自己要求的的学习目标,完成了吗?
如果还未完成,如果你心动的话。
关注我~
我会继续学习和总结,希望能给你带来一些帮助。
与大家共勉,继续努力!欢迎私信交流~
觉得这篇文章对你有帮助的话,帮忙点个赞~
这也是我动力的来源,谢谢各位。
python学习交流群 984632579 除了分享技术文章之外还有很多福利,加群领取学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。
网友评论