程序员的福利:使用WebCollector爬取某美女网站上的图片

0x00 需求

某网站,有海量美女图片,里面默认是按美女的英文名字(A-Z)排序的。估算了一下,至少也得有3000+位美女照片,每位的照片数目从几十张到几百张不等。浏览了几天,才浏览了很少的一部分。心想,用浏览器浏览这么慢,效率那个低啊,这么多照片什么时候才能欣赏完。于是需求就来了:如何爬取这个网站上的美女图片呢?

0x01 工具

笔者选择的爬虫框架是WebCollector。

WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。

相关文档和下载连接在这里:http://www.oschina.net/p/webcollector/edit

笔者使用的版本是2.24

如何安装和配置,这里不详解了,请查阅相关文档。

0x02 Code

查阅该网站网页的元素,确认图片的URL为http://[网站名称]/jav/[美女英文名]/[main index]/[美女英文名]-[sub index].jpg

闲话少说,Talk is easy, show me the code:

public class Main extends BreadthCrawler{public Main(String crawlPath, boolean autoParse) throws Exception {super(crawlPath, autoParse);}@Overridepublic void visit(Page page, CrawlDatums craw) {/*不处理非jpg的网页/文件*/if(!Pattern.matches(".*jpg", page.getUrl())){return;}//http://[网站名称]/jav/[美女英文名]/[main index]/[美女英文名]-[sub index].jpgString strUrl = page.getUrl();String[] strPart = strUrl.split("/");if (strPart.length < 7) {return;}String strMainIndex  = strPart[5];String strPicNameURL = strPart[6];int nLabel = strPicNameURL.lastIndexOf("-");if (nLabel < 0) {return;}String strBeautiName = strPicNameURL.substring(0, nLabel);String strSubIndex = strPicNameURL.substring(nLabel+1, strPicNameURL.length());String strPicPath = "Download\\"+strBeautiName+ "\\" +strBeautiName + "_" + strMainIndex + "-" + strSubIndex;//保存路径格式Download\[美女名字]\[美女名字]-[主编号]-[次编号].jpg/*将图片内容保存到文件,page.getContent()获取的是文件的byte数组*/try {FileUtils.writeFileWithParent(strPicPath, page.getContent());System.out.println(page.getUrl());} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) throws Exception {Main crawler = new Main("MyCollector", true);try {crawler.addSeed("http://www.[网站网址].com");String strReg = "http://www.[网站网址]/jav/*.*";crawler.addRegex(strReg);crawler.setThreads(50);crawler.start(8);}catch(java.io.IOException e){}}
}

最后程序运行了很久(按天算),但数据量也不小,可怜的硬盘:

0x03 总结

虽然耗费了很长时间才把很多图片爬取下来,但仔细检查发现,有些图片是没有爬取下来的,通过日志分析发现,爬虫在进行URL请求时,有些页面的URL是请求失败的。这些URL对应于其他网站,而这些网站是被封掉的。程序写的也很匆忙,读者若有什么新的爬虫技术,欢迎分享和指导。

程序员的福利:使用WebCollector爬取某美女网站上的图片相关推荐

  1. Python学习第一课——爬取模特秀网站的模特图片

    第一次写博客,经验不足. 很早以前就听说过爬虫,但是从未自己去实现过,昨天看到一个爬虫的教学视频,不免心里痒痒,于是自己动手编程实现.在这里我选择的是Python语言(不要问我为什么,实际上我也没有学 ...

  2. 程序员岗位介绍,我爬取了拉勾网所有技术岗位工资数据,算法工程师平均薪资高达2W

    点击观看视频 ↓↓↓ 程序员岗位介绍,我爬取了拉勾网所有技术岗位工资数据,算法工程师平均薪资高达2W 文字版 大家好,我是宁一,一个多月没有更新视频了,这一个多月我都在准备一个店铺商城的云开发小程序项 ...

  3. python爬取安居客网站上北京二手房数据

    目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...

  4. Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据

    目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...

  5. 程序员的快乐-用python爬取彼岸网美女图片

    初入红尘,不知人间疾苦, 暮然回首,已是苦中之人. 这杯中 酒三分, 这酒中 悲七分. 关关难过 关关过, 夜夜难熬 夜夜熬. 愿这世间爱恨情仇尽融于酒, 将这风尘作酒 一饮消愁! 这是枕上诗书里的一 ...

  6. 百度贴吧界面html程序代码,python爬虫例题:爬取百度贴吧评论区图片和视频

    百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片想下载呢?或者看到一段视频想进行下载呢? 今天,本期Python教程带大家通过搜索关键字来获取评论区的图片和视频. [二.项目目 ...

  7. Python爬虫——简单爬取(从网站上爬取一本小说)

    从笔下文学网站爬取一本名为<剑来>的小说,作者为烽火戏诸侯 网站网址如下:https://www.bxwxorg.com/ ①通过查看网页源码找规律(在此之前请弄清楚网站允许爬取的部分,就 ...

  8. python:爬取天气预报+美女网站数据信息

    一.爬取湛江天气预报信息 url:http://www.weather.com.cn/weather/10128100101A.shtml 1.思路分析: ①先爬取网页所有数据,div/ul/li,获 ...

  9. 利用python爬取实习僧网站上的数据

    最近在找实习,就顺便想到用python爬取一些职位信息看看,有哪些岗位比较缺人. #_*_coding:utf-8_*_import requests from bs4 import Beautifu ...

  10. python 安居客 爬虫_Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据...

    page1 宏星地产租售部 新出!1700南花园, 赠500万红木家具 3800万 106442元/m2 5室2厅 357m2 共3层 2008年建造 夏秋冬 碧水庄园 昌平-沙河-定泗路 ['独栋别 ...

最新文章

  1. 在CentOS 6.6上搭建OpenResty 1.9.7.4并输出示例
  2. DecimalFormat 保留精度或者是 小数 比较好用
  3. javascript之闭包理解以及应用场景
  4. 猫和老鼠 蓝桥杯/手速/暴力练习赛(暴力搜索)
  5. 如何动态获取UILabel的高度、宽度
  6. ubuntu14.04 LTS Visual Studio Code 编辑器推荐
  7. 楷书书法规则_楷书笔画书写八大规律
  8. 服务器网络修复工具,常用LSP修复工具盘点 让你轻轻松松上网
  9. mac 无法对计算机进行更改,解析深度技术win10 MAC不能修改的原因和解决成功的技巧...
  10. 苏宁金科CTO肖军:如何让1000人+的团队持续打胜仗,从找人,到育人,到用人具体怎么做?...
  11. 顺序表的初始化、插入、删除、查找
  12. 小程序 订阅消息 wx.requestSubscribeMessage 允许 拒绝 情况的返回 结果
  13. 电阻组合c语言程序,【C语言及程序设计】项目1-4-2-2:计算并联电阻
  14. 寻找志同道合者共同成立写作小组
  15. PHP 开发经验教训
  16. “2022世界杯预测帝”富而喜悦网络走红!网友直呼预测属你神!
  17. 11.17-判断一个数是质数还是合数
  18. 一次有趣(痛苦)的重构
  19. 底层const与顶层const
  20. Linux第一本书 第八章 系统中的软件管理

热门文章

  1. sqlserver2008使用设置sa用户登录步骤
  2. 中国金属包装容器制造行业竞争格局分析与投资规划深度研究报告2022-2028年版
  3. C# 对目录中的文件名按照数字序号进行排序
  4. linux设置北京时区
  5. 改变用户在某表空间的配额不足
  6. IT忍者神龟之 配额不足的解决方法ORA-01536: space quota exceeded for tablespace
  7. 交通守护者“电子警察”
  8. matlab混沌映射,混沌映射MATLAB仿真.docx
  9. 什么相片可以两张弄成一张_美图秀秀怎么把两张图片合成一张?美图秀秀两张图片融合方法汇总_图形图像_软件教程_脚本之家...
  10. Java实现多张图片合并一张