java分页爬取站长素材的图片
本次我们要使用 jsoup 这个html解析器来进行网页爬虫
可能有人一脸懵逼?jsoup是个什么鬼?,干哈戳子的,楞个给说说呗
1、什么是jsoup
直接看看百度百科怎么说:
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
这边在补充几点jsoup相关:
- jsoup也支持从某个地址直接去爬取网页源码,但是 只支持HTTP,HTTPS协议,支持不够丰富
- 其中,要被解析的HTML可以是HTML的字符串、URL、文件
- org.jsoup.Jsoup把输入的 HTML转换成一个org.jsoup.nodes.Document对象,然后从Document对象中取出想要的元素
- org.jsoup.nodes.Document继承了org.jsoup.nodes.Element,Element又继承了org.jsoup.nodes.Node类。里面提供了丰富的方法来获取HTML的元素。
关系大概就是这样:Node > Element >Document
了解了什么是jsoup之后就直接上手来一个小案例吧,不用把这玩意想的很复杂(万物皆工具,所谓工具,按照说明书使用就行了,除非你想了解它的原理),这玩意,对于学习过js、jquery,html等相关的基本前端技能的人非常容易掌握,这玩意就是将网页结构解析出来,里面也提供css选择器来对网页进行操作的玩意,哈哈,先来个案例感受一下:
先导入maven坐标:
<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.2</version>
</dependency>
目标:https://sc.chinaz.com/tupian/diqiutupian.html
这个网页的图片但是如何爬取该分类的所有图片呢?算了,入门案例懒得敲笔记了,自己看下面代码去。注释上面有
看看他的分页的url变化规律:
发现规律了吗?提示:_(除第一页外的页数)
jsoup入门案例,懒得敲笔记了:
int name = 0;InputStream is = null;FileOutputStream fos = null;//1、查看网页的变化规律,通过for循环来获取页面的链接//https://sc.chinaz.com/tupian/diqiutupian.htmlString path = null;for (int i = 1; i <= 3; i++) { //i控制页数if (i == 1) { //是第一页的时候path = "https://sc.chinaz.com/tupian/diqiutupian.html";} else {path = "https://sc.chinaz.com/tupian/diqiutupian_" + i + ".html";}System.out.println(path);//2.1、把html页面解析为document对象//2.2、把页面包装为url对象URL url = new URL(path);//2.3、通过jsoup解析器来解析页面,获得dom对象 传入 url 和 超时连接的毫秒数Document document = Jsoup.parse(url, 300000);//System.out.println(document);//3、通过dom对象对应标签名称获取数据Elements picblock = document.getElementsByClass("picblock");for (Element element : picblock) {//遍历获取每张图片的urlString href = "http:" + element.child(0).child(0).attr("href");//4、把大图也的html页面解析为document对象//4.1、把页面包装为url对象 通过jsoup解析器来解析页面,获得dom对象URL hrefUrl = new URL(href);Document document2 = Jsoup.parse(hrefUrl, 300000);//5.1、通过dom对象的方法 找到指定的类名 imgaElements imga = document2.getElementsByClass("imga");for (Element element1 : imga) {//5.2 选中指定标签通过.attr()方法 获取src属性的值String imgSrc = "https:" + element1.child(0).attr("href");System.out.println(imgSrc);//6.1、打开imgSrc连接//6.2、打开url对象,把路径作为参数传入URL imgsrcUrl = new URL(imgSrc);//6.2、通过url对象的openConnection()方法,打开图片连接URLConnection connection = imgsrcUrl.openConnection();//7.1、通过打开链接的对象的getInputStream(),获取字节输入流is = connection.getInputStream();//7.2、设置输出路径 outFileString outFile = "C:\\爬虫image\\" + name + ".jpg";name++;//7.3、创建字节输出流,把输出路径作为参数传入 new FileOutputStreamfos = new FileOutputStream(outFile);//7.4、读取数据 使用数组读字节,一次读1024字节byte[] bytes = new byte[1024*7];//7.5、使用while循环,输入输出进行先输入后输出 写数据int len = 0;//返回值 读取到的长度,读不到的时候返回-1while ((len = is.read(bytes)) != -1) {fos.write(bytes, 0, len);}System.out.println("下载完成");}}}//7.6、关闭流is.close();fos.close();
运行测试:
有啥问题,欢迎探讨。。。。。。
java分页爬取站长素材的图片相关推荐
- 简单一点,利用xpath解析爬取站长素材的图片
先看爬取成果: 把美女图片下载到一个专门的文件夹下,时不时浏览一下时不时很称心如意呢?(无图展示) 具体流程: 首先来到站长之家:url="站长素材-分享综合设计素材的平台" 这里 ...
- python爬取站长素材网页图片保存到ppt中
2019独角兽企业重金招聘Python工程师标准>>> 网站地址:http://sc.chinaz.com/tupian/index.html 直接上代码: import reque ...
- scrapy图片爬取(爬取站长素材中的高清图片)
- ImagesPipeline:-只需要将img的src的属性值进行解析,提交到管道,管道就会对图片的src进行请求发送获取图片的二次请求 -需求:爬取站长素材中的高清图片-使用流程:-数据解析(图 ...
- scrapy爬取站长素材
scrapy爬取站长素材: 1.创建项目scrapy startproject 爬虫项目名字2.创建虫子scrapy genspider 虫名字3.setting里面加UA伪装4.加LOG_LEVEL ...
- Java爬虫 --- 爬取王者荣耀英雄图片
Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...
- python爬虫练习--爬取站长素材中免费简历模板
python爬虫练习--爬取站长素材中免费简历模板 一.需求 二.代码 1. 引入库 2. main() 3. saveData(div_list) 4. 收尾 结语 一.需求 此代码是为完成波波老师 ...
- Python 自学记录(自定义爬取图片类型,页数 爬取站长之家图片)
入门级别 需要用到 lxml库和相关知识,用到 代理的知识(没用到代理池)等 lxml 方法知识记录 获取responce 返回的页面数据 tree = etree.HTML(context) 路径查 ...
- 基于Java + selenium 爬取某网站千张图片
预览(可以根据循环次数爬取大量图片) 一.网页分析 1 点击F12进入检查,将小箭头移到网页中随便一张图片上 2 进一步我们可以发现每一张图片的链接都包含在<ul>标签的子标签<li ...
- python用requests库和xpath爬取站长素材的免费简历模板
站长素材免费简历模板的url:https://sc.chinaz.com/jianli/free.html 开始前先说一下爬虫思路,requests和xpath简单的使用方法): 先打开网页 (分析) ...
最新文章
- STM32中关于RCC时钟的理解
- 最好的浏览器排行榜_PG是最好的数据库;TiDB 4.0前瞻;SequoiaDB高可用原理;20c DG新特性... 数据库周刊第18期...
- 如何使用canvas绘图
- Scikit-learn数据预处理分类变量编码之多标签二值化
- Scala入门到精通——第四节 Set、Map、Tuple、队列操作实战
- linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器
- netlink的内核实现原理
- Linux 内核PCI去除一个设备
- 中金:基金投顾试点扩容,买方时代已至
- qq群临时文件转永久
- 金蝶云星空html5的网页主界面如何修改,金蝶云星空启用科目管控后,科目相关的值更新事件无法生效原因及解决办法...
- 2004-2019年分省农产品进出口额
- python白噪声检验结果查询_使用python实现时间序列白噪声检验方式
- 淘宝分布式数据库是如何实现高可用的
- 买二送一跟买三免一有区别吗?
- 计算机u盘序列号,win10-u盘序列号cmd怎么查
- 图卷积网络原理(二)【图信号与图的拉普拉斯矩阵】
- HDFS性能压测工具
- 《Unity Shader 入门精要》读书笔记
- 近视眼学计算机好吗6,怎么会加重眼睛的近视,近视加重与6个原因有关
热门文章
- 【java毕业设计】基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码)——超级玛丽游戏
- 矽力杰SY8088国产代替料RY3408
- jqgrid 动态设置单元格不可编辑
- Java 偏斜锁 轻量级锁 自环锁 重量级锁
- Android 高德地图中路线规划绘制界面线路
- 百度名词~杂篇--(对日常遇到事物的深入了解)
- OFD格式的电子发票文件怎么免费转换成PDF
- MySQL数据库管理(五)日志管理、备份与恢复
- 幼儿园管理系统c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...
- 酷科技 | 智能戒指 ——将科技武装到手指