java爬虫好的教程_[Java教程]一个更加简单粗暴的爬虫
[Java教程]一个更加简单粗暴的爬虫
0
2017-09-30 16:00:13
今天上午看到一篇文章:一个简单粗暴的爬虫 - 必应今日美图。我也用自己的方式更加简单的实现了这个功能。下面我就贴一下自己的代码和思路。
我就不分析原博的思路了,原博写的很清楚。我用的是htmlunit,从原博的第三步开始,观察三级地址的规律, > 1 import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; 2 import com.gargoylesoftware.htmlunit.WebClient; 3 import com.gargoylesoftware.htmlunit.html.HtmlAnchor; 4 import com.gargoylesoftware.htmlunit.html.HtmlPage; 5 import org.apache.commons.io.FileUtils; 6 7 import java.io.File; 8 import java.io.IOException; 9 import java.io.InputStream;10 import java.net.MalformedURLException;11 12 /**13 *
14 * class intro15 *
16 *
17 * Created by fujun on 2017/9/29.18 */19 public class BingPhoto {20 public static void main(String[] args) {21 WebClient webClient = new WebClient();22 webClient.getOptions().setCssEnabled(false);23 webClient.getOptions().setJavaScriptEnabled(false);24 for (int i = 1; i < 491; i++) {25 String url = "http://bing.plmeizi.com/show/" + i;26 try {27 HtmlPage page = webClient.getPage(url);28 HtmlAnchor a = (HtmlAnchor) page.getElementById("picurl");29 String picUrl = a.getHrefAttribute();30 if (picUrl.contains("jpg")) {31 InputStream inputStream = webClient.getPage(picUrl).getWebResponse().getContentAsStream();32 FileUtils.copyToFile(inputStream, new File("E://bingpic//" + i + ".jpg"));33 System.out.println("SUCCEED:" + url);34 } else {35 System.out.println("FAILED:" + url);36 }37 38 } catch (FailingHttpStatusCodeException e) {39 // TODO Auto-generated catch block40 e.printStackTrace();41 } catch (MalformedURLException e) {42 // TODO Auto-generated catch block43 e.printStackTrace();44 } catch (IOException e) {45 // TODO Auto-generated catch block46 e.printStackTrace();47 } finally {48 webClient.close(); // 关闭客户端,释放内存49 }50 }51 }52 }
注意点:
有些页面是404的,例如 src='/images/loading.gif' data-original="http://images2017.cnblogs.com/blog/1250684/201709/1250684-20170930150215075-698272723.png" alt="">
本文网址:http://www.shaoqun.com/a/327023.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
0
java爬虫好的教程_[Java教程]一个更加简单粗暴的爬虫相关推荐
- java 微信群发多图文_[Java教程]httpClient实现微信公众号消息群发
[Java教程]httpClient实现微信公众号消息群发 0 2016-09-21 20:00:10 1.实现功能 向关注了微信公众号的微信用户群发消息.(可以是所有的用户,也可以是提供了微信ope ...
- java播放器使用教程_[Java教程]Java音乐播放器
[Java教程]Java音乐播放器 0 2016-01-07 12:00:09 乐乐音乐目前是基于musique开发的一个java音乐播放器,之前开发了一个android版本的音乐播放器,现在把and ...
- webservice java教程_[Java教程]JAVA开发Webservice——JAXB
[Java教程]JAVA开发Webservice--JAXB 0 2016-01-19 17:00:04 JAXB(Java API for JAXB 可以实现Java对象与 下面来了解一下如何通过标 ...
- Java国际化教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 Java国际化入门教程 - 从简单的步骤了解Java国际化从基本到高级概念,包括概述,环境设置,区域设置,区域设置详细信息,显示语言,ResourceBundle,NumberFormat, ...
- Java Regex 教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 正则表达式不仅仅是Java的技术,在任何一门编程语言中都会存在,是一种通用的IT技术,其理念和用法在任何编程语言中基本一致,除了有一些由于语言不同而导致的一些语法不同正则表达式,主要用于匹配 ...
- Ruby教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License.它的灵 ...
- java 工厂模式的写法_[java设计模式] 工厂模式解析
什么是工厂模式? 我的总结是: 遵守软件设计中的开闭原则和依赖反转原则, 并且客户端只需通过参数来创造多个对象, 并且在创建过程中,创建对象的过程对客户端是透明的. 这种开发模式叫做工厂模式. 出现原 ...
- java继承与实现的_[Java学习] Java继承的概念与实现
继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似. 继承可以理解为一个类从另一个类获取方法和属性的过程.如果类B继承于类A,那么B就拥有A的方法和属性. ...
- shopify二次开发教程_详细教程:如何将Shopify的Storefront API与React和Redux结合使用...
shopify二次开发教程 by Chris Frewin 克里斯·弗里温(Chris Frewin) 详细教程:如何将Shopify的Storefront API与React和Redux结合使用 ( ...
最新文章
- 碰到Maven依赖冲突,想砸电脑?这个IDEA插件必须了解一下...
- 导入eclipse工程到Android Studio中
- 洛谷 [P1282] 多米诺骨牌
- python3数据库表关联_Django中数据库操作|python3教程|python入门|python教程
- 单片机数据在网页上显示_不务正业的Excel也玩地图,在地图上显示数据,好玩又简单...
- 开发物体识别桌、_想用人工智能实现安全风险管控?快来试试EasyMonitor一站式视频监控开发平台...
- java socket 路由_JAVA简单的Socket网络编程!CS
- leetcode121买卖股票的最佳时机
- uniapp使用阿里图标库
- 计算机使用知识大赛,计算机基础知识大赛 抢答题范围
- 人体3D重建-ICON论文解读
- C#里的InputBox
- python开发要学什么_运维为什么要学编程?编程为什么是Python?
- 自动化工具之UIAutomator
- 支持H.265视频网页Web播放的EasyPlayer.js设计理念与功能计划
- HL6601高性价比多种快充协议芯片QC3.0QC2.0华为FCP,SCP.VOOV苹果三星快充协议
- 2021年杭州值得去的46家规模互联网大厂公司全名简称
- 【JY|土木】失稳你过来,我们谈谈吧。
- android 拍照 华为,【华为MateRS保时捷版评测】拍照:徕卡三摄登顶DxOMark名副其实_华为 Mate RS保时捷版_手机评测-中关村在线...
- 雷塞DMC3600运动控制注意事项和解决办法