`

花瓣网图片抓取器

 
阅读更多
因为花瓣网图片是js动态加载的,而且还是下拉加载,简单的通过查找<img>标签便不是很可行了。
所以最好的方法是分析url,分多次请求;这里面的分析参考http://blog.chinaunix.net/uid-23500957-id-3878770.html


程序实现思路如下:
1.首先访问某一画板主页,例如http://huaban.com/boards/18484185/
2.得到网页源码(不执行js)后,一般有20张图片的信息,存在这么一个json数据里
app.page["board"] = {"board_id":18484185, "user_id":16352918, "title":"可爱动漫", "description":"", "category_id":"anime", "seq":2, "pin_count":178, "follow_count":50, "like_count":1, "created_at":1415945887, "updated_at":1419412105, "deleting":0, "is_private":0, "extra":null, "user":{"user_id":16352918, "username":"爱吃饭团的小小泽", "urlname":"jbnihpdw84", "created_at":1415945122, "avatar":{"id":63028007, "farm":"farm1", "bucket":"hbimg", "key":"31ccfe5585d691cd7b6d48959397eec51daf5bae1d7b6-G3Fatz", "type":"image/jpeg", "width":720, "height":960, "frames":1}, "pin_count":3643, "board_count":67, "like_count":2, "follower_count":300, "creations_count":0, "boards_like_count":0, "following_count":83, "commodity_count":15, "profile":{"location":"", "sex":"0", "birthday":"", "job":"", "url":"", "about":""}, "status":{"emailvalid":false, "newbietask":0, "lr":1421675510, "invites":0, "share":"0"}}, "category_name":"动漫", "following":false, "liked":false, "pins":[{"pin_id":297911086, "user_id":16352918, "board_id":18484185, "file_id":65136253, "file":{"farm":"farm1", "bucket":"hbimg", "key":"8b5906dc77a84e6bdbdfda7d882378dfb3e8401724273-RFklTX", "type":"image/jpeg", "width":1024, "height":1575, "frames":1, "theme":"FAF8F0"}, "media_type":0, "source":"donmai.us", "link":"http://donmai.us/posts/1880339?tags=touhou", "raw_text":"#东方project#\n#娜兹玲#", "text_meta":{"tags":[{"start":0, "offset":11}, {"start":12, "offset":5}]}, "via":297275179, "via_user_id":6303198, "original":297275179, "created_at":1419412104, "like_count":0, "comment_count":0, "repin_count":2, "is_private":0, "orig_source":null, "hide_origin":false}, {"pin_id":297910029, "user_id":16352918, "board_id":18484185, "file_id":65137757, "file":{"farm":"farm1", "bucket":"hbimg", "key":"67f6920b0f1cc039c251b3a4d467b27464830fcc5240b-SC07Pk", "type":"image/jpeg", "width":621, "height":869, "frames":1, "theme":"F6EADB"}, "media_type":0, "source":"pixiv.net", "link":"http://www.pixiv.net/member_illust.php?mode=medium&illust_id=47696761", "raw_text":"#东方project#\n#今泉影狼##博丽灵梦##雾雨魔理沙#うちの子。", "text_meta":{"tags":[{"start":0, "offset":11}, {"start":12, "offset":6}, {"start":18, "offset":6}, {"start":24, "offset":7}]}, "via":297288273, "via_user_id":6303198, "original":297288273, "created_at":1419412016, "like_count":0, "comment_count":0, "repin_count":28, "is_private":0, "orig_source":null, "hide_origin":false}, ...

3.我们用如下正则表达式,提取图片的pinId,图片的key(用于得到图片的地址),图片类型
private List<Img> parsePinsFromXml(String xmlStr) {
		List<Img> pins = new ArrayList<Img>();
		String pattern = "\\{\"pin_id\":(\\d+),.+?\"key\":\"(.+?)\",.\"type\":\"image/(.+?)\",";

		// 创建 Pattern 对象
		Pattern r = Pattern.compile(pattern);

		// 现在创建 matcher 对象
		Matcher m = r.matcher(xmlStr);
		while (m.find()) {
			Img pin = new Img();
			System.out.println(m.group());
			pin.setPinId(m.group(1));
			pin.setKey(m.group(2));
			pin.setType(m.group(3));
			pins.add(pin);
			System.out.println(pin.getPinId()+","+pin.getKey()+","+pin.getType());
		}
		return pins;
	}

4.一般返回的是20个pin,我们选取最后一个pinId,使用如下url继续访问网站,获取接下来的20个pin,直至得到所有的pin,或是无法获得更多的pin
url = this.boardUrl + "?max=" + img.getPinId() + "&limit=20&wfl=1";

其中,boardUrl = "http://huaban.com/boards/18484185/"
5.到这一步,已经有所有图片的key值了
例如,31ccfe5585d691cd7b6d48959397eec51daf5bae1d7b6-G3Fatz
再两端分别加上"http://img.hb.aicdn.com/"与"_fw658"即可得到大图地址
6.到这儿就不用多说了,根据图片url把图片下载到指定位置即可








最终下载到的图片:


所附jar,需运行在jre8.0上
  • 大小: 27.7 KB
  • 大小: 34.1 KB
  • 大小: 58.1 KB
  • 大小: 453.2 KB
分享到:
评论

相关推荐

    花瓣网图片大搜罗:Python爬虫实战手册

    我们将从零开始,教你如何使用Python编写爬虫,深入花瓣网的图片海洋,批量抓取你心仪的设计资源。本手册涵盖了爬虫的基础知识、环境搭建、代码编写、数据解析、存储以及反爬机制的应对策略。通过本手册,你将学习到...

    Python-花瓣网花瓣爬虫

    【Python-花瓣网花瓣爬虫】是一个利用Python编程语言实现的网络爬虫程序,主要针对花瓣网(Huaban)上的内容进行数据抓取。花瓣网是一个以收集和分享创意图片为主的平台,用户可以创建自己的画板,将喜欢的图片保存...

    仿花瓣网的图片瀑布流

    【图片瀑布流】是一种常见的网页布局方式,常用于图片展示网站,如花瓣网,它能够以视觉上引人入胜的方式展示大量图片。瀑布流布局的特点是图片在页面上自上而下排列,每行图片数量不固定,随着浏览器窗口大小的变化...

    高仿花瓣网源码 v5.1.zip

    高仿花瓣网源码简介 高仿花瓣网源码是基于thinksns进行开发的分享类网站源码。 Pinterest是最火爆、最受关注的图片 兴趣分享类网站。Pinterest名称由Pin(图钉) Interest(兴趣)组成,寓意为把自己感兴趣的东西...

    花瓣网图片淡入淡出轮播图

    【花瓣网图片淡入淡出轮播图】是一种常见的网页设计元素,用于展示一系列图片,通过淡入淡出的过渡效果使得图片切换更加平滑、自然。这种效果在网站的首页、产品展示或个人作品集等场景中经常被用到,能够提升用户的...

    仿花瓣瀑布流-无限加载图片

    瀑布流布局,也被称为Masonry布局,是一种网页布局方式,常用于展示图片或者内容,如花瓣网就是一个典型的例子。这种布局方式的特点是每个元素(通常是图片)的宽度一致,但高度不固定,使得页面呈现出类似瀑布的...

    PHP实例开发源码-高仿花瓣网源码 php版.zip

    高仿花瓣网的源码可能会涉及图片的上传、缩略图生成、裁剪等操作。这可能用到PHP的GD库或ImageMagick,实现对图像的处理和优化。 七、模板引擎 为了分离业务逻辑和视图,源码可能采用了如Twig或Smarty这样的模板...

    仿花瓣网客户端

    2. **网络请求与数据解析**:客户端需要与花瓣网的API进行交互,获取图片和用户信息等数据。这通常涉及到HTTP请求库,如OkHttp或Retrofit,以及JSON解析库,如Gson或Jackson,用于处理服务器返回的JSON格式数据。 3...

    花瓣网源码

    【花瓣网源码】是一个基于ThinkSNS内核构建的网站源码,旨在模仿流行的社交媒体平台Pinterest的功能和设计。这个源码提供了创建、分享和发现视觉灵感的平台,让用户能够像在Pinterest上一样,将各种图片和内容组织到...

    Python-网站图片爬虫已包含微博微信公众号花瓣网及免费IP代理豆瓣电影爬虫

    网站图片爬虫(已包含:微博,微信公众号,花瓣网)及免费IP代理 豆瓣电影爬虫

    花瓣资源收集器

    是花瓣网的资源收集工具

    花瓣网图片批量上传工具/图床/typora插件

    花瓣网图片批量上传工具/图床/typora插件 参考 python版本的这个太老了 已经不能用了,现在全部是V3接口 github huabanv3 api 功能说明 这是一个用于向花瓣网批量上传/下载 图片的程序。需要用户名密码 多线程并发...

    高仿花瓣网源码 v5.1

    程序介绍:程序自带2个模板,花瓣网、 知美网目前主要功能:1、淘宝客,允许后台设置淘宝客帐号2、分享本地图片3、分享网络图片4、采集工具5、分享视频6、专题功能7、基于thinksns,可以轻易的添加官方的应用(群组...

    仿花瓣网兴趣图谱

    【标题】"仿花瓣网兴趣图谱"是一个项目,旨在模仿知名设计灵感分享平台——花瓣网的功能,构建一个用户可以收集、整理和分享自己感兴趣内容的图谱系统。这个项目可能包括用户界面的设计、数据库结构的搭建以及后端...

    花瓣网布局demo.zip

    花瓣网布局Demo是一个基于CSS技术实现的示例项目,它主要展示了如何利用CSS来构建一个类似于花瓣网的页面布局。这个压缩包包含了实现这一布局所需的HTML结构和CSS样式。在这个项目中,我们可以深入学习和理解以下几...

    2016花瓣官网首页模板

    "花瓣官网"则意味着这个模板的设计灵感可能来源于花瓣网,一个以收集和分享创意设计为主的在线平台。 【压缩包子文件的文件名称列表】中,我们可以看到以下四个主要部分: 1. **index.html**:这是网页的主入口文件...

    基于PHP的高仿花瓣网源码 php版.zip

    花瓣网是一个知名的在线设计资源分享平台,用户可以收集、整理和分享网页上的图片灵感。这个源码可能包含了实现类似功能的代码结构和逻辑,例如用户注册、登录、图片采集、分类管理等。 【描述】"基于PHP的高仿花瓣...

    轻博客,类似花瓣网,点点网的轻博客

    "轻博客,类似花瓣网,点点网的轻博客"这个标题暗示我们这是一个类似的开源项目,可能用于搭建自己的个性化轻博客站点。 描述中的"轻博客源代码,经过测试可以使用"表明这是一套可用的源代码,已经过初步验证,可以...

    Android--花瓣网App

    在花瓣网App中,由于涉及到许多图片的展示,Fresco能有效防止因内存泄漏或OOM错误导致的应用崩溃。它采用的分层缓存策略和离屏渲染技术,确保了图片加载的快速和流畅,同时降低了对内存的占用。 4. **MVP(Model-...

Global site tag (gtag.js) - Google Analytics