本次我们要使用 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分页爬取站长素材的图片相关推荐

  1. 简单一点,利用xpath解析爬取站长素材的图片

    先看爬取成果: 把美女图片下载到一个专门的文件夹下,时不时浏览一下时不时很称心如意呢?(无图展示) 具体流程: 首先来到站长之家:url="站长素材-分享综合设计素材的平台" 这里 ...

  2. python爬取站长素材网页图片保存到ppt中

    2019独角兽企业重金招聘Python工程师标准>>> 网站地址:http://sc.chinaz.com/tupian/index.html 直接上代码: import reque ...

  3. scrapy图片爬取(爬取站长素材中的高清图片)

    - ImagesPipeline:-只需要将img的src的属性值进行解析,提交到管道,管道就会对图片的src进行请求发送获取图片的二次请求 -需求:爬取站长素材中的高清图片-使用流程:-数据解析(图 ...

  4. scrapy爬取站长素材

    scrapy爬取站长素材: 1.创建项目scrapy startproject 爬虫项目名字2.创建虫子scrapy genspider 虫名字3.setting里面加UA伪装4.加LOG_LEVEL ...

  5. Java爬虫 --- 爬取王者荣耀英雄图片

    Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...

  6. python爬虫练习--爬取站长素材中免费简历模板

    python爬虫练习--爬取站长素材中免费简历模板 一.需求 二.代码 1. 引入库 2. main() 3. saveData(div_list) 4. 收尾 结语 一.需求 此代码是为完成波波老师 ...

  7. Python 自学记录(自定义爬取图片类型,页数 爬取站长之家图片)

    入门级别 需要用到 lxml库和相关知识,用到 代理的知识(没用到代理池)等 lxml 方法知识记录 获取responce 返回的页面数据 tree = etree.HTML(context) 路径查 ...

  8. 基于Java + selenium 爬取某网站千张图片

    预览(可以根据循环次数爬取大量图片) 一.网页分析 1 点击F12进入检查,将小箭头移到网页中随便一张图片上 2 进一步我们可以发现每一张图片的链接都包含在<ul>标签的子标签<li ...

  9. python用requests库和xpath爬取站长素材的免费简历模板

    站长素材免费简历模板的url:https://sc.chinaz.com/jianli/free.html 开始前先说一下爬虫思路,requests和xpath简单的使用方法): 先打开网页 (分析) ...

最新文章

  1. STM32中关于RCC时钟的理解
  2. 最好的浏览器排行榜_PG是最好的数据库;TiDB 4.0前瞻;SequoiaDB高可用原理;20c DG新特性... 数据库周刊第18期...
  3. 如何使用canvas绘图
  4. Scikit-learn数据预处理分类变量编码之多标签二值化
  5. Scala入门到精通——第四节 Set、Map、Tuple、队列操作实战
  6. linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器
  7. netlink的内核实现原理
  8. Linux 内核PCI去除一个设备
  9. 中金:基金投顾试点扩容,买方时代已至
  10. qq群临时文件转永久
  11. 金蝶云星空html5的网页主界面如何修改,金蝶云星空启用科目管控后,科目相关的值更新事件无法生效原因及解决办法...
  12. 2004-2019年分省农产品进出口额
  13. python白噪声检验结果查询_使用python实现时间序列白噪声检验方式
  14. 淘宝分布式数据库是如何实现高可用的
  15. 买二送一跟买三免一有区别吗?
  16. 计算机u盘序列号,win10-u盘序列号cmd怎么查
  17. 图卷积网络原理(二)【图信号与图的拉普拉斯矩阵】
  18. HDFS性能压测工具
  19. 《Unity Shader 入门精要》读书笔记
  20. 近视眼学计算机好吗6,怎么会加重眼睛的近视,近视加重与6个原因有关

热门文章

  1. 【java毕业设计】基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码)——超级玛丽游戏
  2. 矽力杰SY8088国产代替料RY3408
  3. jqgrid 动态设置单元格不可编辑
  4. Java 偏斜锁 轻量级锁 自环锁 重量级锁
  5. Android 高德地图中路线规划绘制界面线路
  6. 百度名词~杂篇--(对日常遇到事物的深入了解)
  7. OFD格式的电子发票文件怎么免费转换成PDF
  8. MySQL数据库管理(五)日志管理、备份与恢复
  9. 幼儿园管理系统c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...
  10. 酷科技 | 智能戒指 ——将科技武装到手指