LOFTER是网易公司2011年8月下旬推出的一款轻博客产品。

LOFTER专注于为用户提供简约、易用、有品质、重原创的博客工具、原创社区,以及有品质的手机博客应用。

LOFTER首次采用独立域名,口号为”专注兴趣,分享创作”。 一经上线,便受到了互联网众多文艺青年、摄影师、插画师的喜爱。

作为中国的Instagram,自然是很多人爬虫的目标,之前我写过一篇关于如何电脑批量上传Instagram图片的文章,这次来点高级的,来做一个lofter的批量下载器.

环境

eclipse, selenium包, firefox

目标

制作下载器,输入用户名,下载其账户上的所有照片

原理介绍

“http://” + username + “.lofter.com/view”是lofter提供的用户图片摘要视图,可以通过ajax动态加载的方法在一张网页上显示出用户所有的图片.我们就可以通过selenium模拟用户滚动瀑布流,再通过ECMAScript捕捉到所有图片的url,最后利用java发送get包下载所有图片.

准备工作

为了节省流量和时间,我们既不加载图片(加载出来的只是缩略图,没用),也不要加载界面了(节省本地资源).

注意,这两个节省是相互独立的.

FirefoxOptions options = new FirefoxOptions();

  1. // 启动配置"不加载图片"
  2. options.addPreference("permissions.default.image", 2);
  3. // 启动参数"无界面"
  4. FirefoxBinary myBinary = new FirefoxBinary();
  5. myBinary.addCommandLineOptions("--headless");
  6. options.setBinary(myBinary);

FirefoxDriver driver = new FirefoxDriver(options);

实现方式

下一篇文章将公布源码

  • 键入pageDown键以触发ajax瀑布流
  • 通过Dom元素的element.children.length属性值的累加获得图片总数
  • 在控制台输出所有url(暂停),以便核实再下载
  • 开启多线程超时跳过机制,防止损坏的url
  • 设置selenium的隐式等待和显式等待

注意事项

在经过了多次试验之后得到的最优方案.

  • 利用页面提供的数据(页首’文章数量’字段)可以得到用户全部的图片数量以供参考
  • 循环检测的时候不要傻不拉几的数元素的数量,而要通过length值直接获得,因为JS比java要脆弱的多
  • 结束标志最好基于数量增长周期超时
  • url需要裁剪,去掉问号之后的参数(这些参数用来生成缩略图)
  • 下载时切记从流的头字节获取mime信息,用来生成后缀名

源码请见下文.

selenuim爬虫实战(日lofter.com)的更多相关文章

  1. selenuim爬虫实战 (下)

    SuperLOFTERDownloader7.java package test; import java.io.IOException; import java.util.ArrayList; im ...

  2. Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗

    Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网 ...

  3. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  4. Python爬虫实战之爬取糗事百科段子【华为云技术分享】

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  5. Pyhton爬虫实战

    Pyhton爬虫实战 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网站,以致产生的服务器压力,本人深感歉意,并没 ...

  6. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...

  7. Python爬虫实战(4):豆瓣小组话题数据采集—动态网页

    1, 引言 注释:上一篇<Python爬虫实战(3):安居客房产经纪人信息采集>,访问的网页是静态网页,有朋友模仿那个实战来采集动态加载豆瓣小组的网页,结果不成功.本篇是针对动态网页的数据 ...

  8. Python爬虫实战(2):爬取京东商品列表

    1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反 ...

  9. 关于Python网络爬虫实战笔记③

    Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...

随机推荐

  1. Oracle日期周具体解释以及周開始结束时间计算

    1 ORACLE中周相关知识描写叙述 1.1           日期格式化函数 TO_CHAR(X [,FORMAT]):将X按FORMAT格式转换成字符串. X是一个日期,FORMAT是一个规定了 ...

  2. Think Pad T410键盘溅水有惊无险

    昨日不小心单位给配的T410溅水了,由于水不多,用餐巾纸擦干后就晾起来了. 大概过了6小时,心想现在该好了吧,于是按开机键,无效! 当时暗骂Thinkpad给LX做坏了,一点小水都挡不住,还敢号称防洒 ...

  3. 查找文本工具grep

    许多时候需要从一大堆的命令输出或文本内容中找出一两行关键的内容,例如从系统用户文件中查找某个用户.如果不借助工具,这将是一项非常繁琐的工作,这时可以使用grep工具对内容进行筛选. grep(glob ...

  4. CKEditor与CKFinder学习--CKFinder源代码改动自己定义上传文件名称

    CKFinder的系列文章到眼下应该说基本能够满足开发需求了,只是另一个小细节,CKFinder默认上传的文件名称和源文件名称一致,假设文件名称反复会自己主动加入编号"(1)"&q ...

  5. 【Linux】more命令

    用途 more主要用于一页一页查看档案 全称 全称即为more 说明 空格键 :代表向下翻一页,也可以使用CTRL+F Enter :代表下翻一行 :f      :立刻显示出文件名以及目前显示的行数 ...

  6. 51CTO 资料汇总 截止20150504

    ================帖子列表,请大家选择自己喜欢的汇总贴分享================ 考试认证: 1.备战2014软考!精品视频教程推荐(综合复习+经验分享+考前冲刺)[随时更新] ...

  7. web站点,同一个浏览器只能登陆一个用户的原因(cookie不能跨浏览器)

    我的web站点,比如  http://ip/testsite/default.aspx, 当我在我的机器上,用chrome打开,用账号user1登陆,那么当我再新开个tab,再打开这个web站点,这时 ...

  8. c#中用DirectShow实现媒体播放器

    原文地址:https://www.cnblogs.com/aiqingqing/p/4338448.html 用.net做多媒体开发的似乎不多,所以网上资源也少,看的人更少.不过我的博客上居然还有几位 ...

  9. Spring velocity 中文乱码 解决方案

    主要有这么几步,在spring web 的  [sevlet-name]-servlet.xml文件中,修改为: 黑体字体为关键,其它根据你的实际情况配置: <!-- ============= ...

  10. 零基础学python-5.4 数字精度与复数

    1.整数精度 这里我们对照一下python2.7与python3.4的整数精度 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/ ...