由于项目需求,综合了几种考虑方案,准备使用java 爬虫进行数据的获取,不用自己去费劲的想逻辑的实现

使用java爬虫之前,我们必须要掌握的知识:

         1. 对前端HTML的元素有一定的认识

         2. 使用httpclient

         3. jsoup 工具进行HTML的解析判断

         4. 能够使用一款网络抓包工具

抓包工具的使用请参考:https://www.cnblogs.com/miantest/p/7289694.html

jsoup 的api的地址:http://www.open-open.com/jsoup/attributes-text-html.htm    -->语法规则只要会HTML元素属性,jquery,javascript 就会玩它

  介绍几个常用的吧:  

1.将抓取到的html文本转为JSOUP 可操作的Document

Document doc=Jsoup.parse(你的html文本);

2.select 元素的使用(有很多哦):注意点是只有属性才会被[]括起来,都可以进行混合使用的如select("div#id")

doc.select("a[target][title]")  -------> 匹配 a 标签下的 带有target 和 title  属性的标签

doc.select("div")   ------------>标签名查找,匹配所有带div标签的元素

doc.select("[title]") --------->属性查找,匹配属性带有title的元素

doc.select(".classname")-------->class名称查找,匹配class 名称为classname的元素

doc.select("#id")-----------> id查找,匹配id 名为id的元素

doc.select("[title=斗图网  RSS Feed]")-------->利用属性值进行查找,匹配title=斗图网  RSS Feed 的元素

3.获取属性值与文本的方法

element.attr("name") ------->获取元素中的name属性值

element.text()
element.html()----------->获取元素的文本内容 4.也有很多我们javascript操作元素的选择器 .getElementById(); -----id 查 .getElementsByClass(); -----class 查 .getElementsByAttribute();------属性查 .getElementsByAttributeValue(key, value) -------属性值查 ..........等等,次数省略一万字

pom依赖导入:

   是为了让我们方便快捷的操作HTML中的元素

<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.2</version>
</dependency>

httpclient :可以让我们便捷的进行post 与get 的请求方式

  我们现在进行爬取斗图网的图片数据

      1.获取斗图网的整个HTML页面并转换为Document  ,我们需要分析图片是放在那个标签结构下的,需要看HTML代码分析

//jsoup 提供的get请求,底层使用的是java.net包url
Document doc = Jsoup.connect("http://www.bbsnet.com/").get();
//select 选择器组合使用,抓取classname为fixed-height 元素下的带有targer,title属性的a 标签
Elements el=doc.select(".fixed-hight a[target][title]");

  结果如下:

  

  我们将它的图片地址以及title取出来进行保存(或者数据库保存),我这里放到list里

  

    Map<String,String>map =new HashMap<>();
List<Map<String,String>> lis =new ArrayList<Map<String,String>>();
for(Element ee:el) {
//有图片的保存
if(ee.select("img").size()!=0) {
//System.out.println(ee);
//放入src属性
map.put("url", ee.select("img").get(0).attr("src"));
map.put("title", ee.attr("title"));
lis.add(map);
}
}

结果如下:

[{title=往后余生表情包 [往后余生 做饭是你 黄脸婆也是你 生娃是你...], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuqhu4jf1bg206y06yt90.gif}, {title=莲花表情包 [心如止水 大彻大悟 说你妈呢?], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuqhwl9remg205k05k0t3.gif}, {title=熊猫人敷面膜表情包 [玻尿酸、火山泥、水密码、膜法世家????], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuqjcir4l3g202s02yglm.gif}, {title=国宝大熊猫表情包 [老板,拿瓶阔落 要冰镇的], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuqhv5owxxg206o06oq3t.gif}, {title=采访宋民国表情包 [当事人:现在就是后悔,非常后悔], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fukscrhp0dg209q07wdgz.gif}, {title=精神病表情包 [我是精神病三号], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuksdeqi1fg20b30dvq3v.gif}, {title=派大星表情包 [一套迷你版GIF派大星和海绵宝宝], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fth9h9lymxg302i02igm8.gif}, {title=狗子表情包 [表面稳如狗 内心慌得一批], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuksdtw524g209q09qabw.gif}, {title=金馆长小猪表情包 [简直跟猪一样 大蠢猪!], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fukror6ntlg208c086t9q.gif}, {title=海绵宝宝和派大星表情包 [交个朋友 谈个恋爱], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuflfxcks4g20ci099k14.gif}, {title=小坏坏表情包[带字和不带字小坏坏]全套200张, url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fufjp85a5bg201o01o3ya.gif}, {title=唯美的表情包 [蝉鸣整个夏天,你只用了一句再见], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fuflgkntv0g20cq076qp2.gif}, {title=表示很穷的表情包 [规则长方体固体物质空间移动工程师], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fu95ht8wicg30g40lp10u.gif}, {title=跳钢管舞表情包 [小兔子、小猫、黄狗、doge一起跳起来!], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fu95igkfklg304w040ton.gif}, {title=粉红猪猪拿枪表情包 [我是一个没有感情的杀手 我也是], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fu95hgp1j9g308c07edgm.gif}, {title=权律二文字表情包 [今天除了皮 又啥也没干], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fu95g0xu1kg30c80c80us.gif}, {title=敷面膜表情包 [我是一个没有感情的骚货], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fu539p3tcbg309q09qdhg.gif}, {title=可爱小脚转动表情包 [看我抖jio的姿势 就知道我多社会], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fu539htqd1g306o06on5e.gif}, {title=脱发表情包 [没见过空气刘海吗?], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1fu539c7pj4g306o06ot8w.gif}, {title=布朗熊三连表情包 [我 去你 妈的 摔个兔子], url=http://wx4.sinaimg.cn/mw690/006HJgYYgy1ftxx6puoe3g30qo0pidpq.gif}, {title=跳舞小表情包 [一个网友收藏了多年的萌系刷屏小表情], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1ftvzlqo580g201e01eaa5.gif}, {title=单身表情包带字 [谈什么恋爱 是零食不好吃吗?], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1ftvzlssmo4g209q09bwfi.gif}, {title=熊猫吃薯片表情包 [吃着薯片喝着老干妈、可乐、奶茶...], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1ftvzlm18dtg204g03h3yn.gif}, {title=旭旭宝宝表情包GIF[套你猴子 装逼王我当定了]全套120张, url=http://wx4.sinaimg.cn/mw690/6a04b428gy1ftvz8jh0apg20g40g4aem.gif}, {title=跳动小人表情包 [一组萌萌哒的蹦跶动态表情包], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1ftu1voty1vg2020020t8t.gif}, {title=水果流泪表情包 [今天我是臭屁慢狗,我不流泪只是骂人], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1ftu24u4xnng209q09qgmg.gif}, {title=哈士奇emmm表情包 [二哈emmm...... prprpr......原图系列], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1ftu1vwz8ogg205u072gys.gif}, {title=gavin thomas表情包 [被安排的明明白白], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fts9nsppo8g209p09qgns.gif}, {title=呐给你表情包 [呐~给你根香蕉], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fts9hto1vdg202i02imx0.gif}, {title=吃鸡表情包 [大哥快递不?], url=http://wx4.sinaimg.cn/mw690/6a04b428gy1fts9fc8mgbg20br0bhq4f.gif}]

 总之,很简单,只要懂HTML中的元素就可以很轻松的使用jsoup抓取数据、因为jsoup 的语法也是遵守MTML中的语法的。下一节,我将通过爬虫进行模拟网站登录---

jsoup  连接的常用操作

   Connection con2 = Jsoup
.connect("https://passport.csdn.net/account/login");
con2.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"); // 设置cookie和post上面的map数据
Response login = con2.ignoreContentType(true).method(Method.POST)
.header("Referer","https://www.csdn.net/ ")
.data(datas)//传入提交的数据 我们form表单的数据
.cookies(rs.cookies())//传入的cookie
.execute();

java 爬虫的更多相关文章

  1. webmagic的设计机制及原理-如何开发一个Java爬虫

    之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方 ...

  2. JAVA爬虫挖取CSDN博客文章

    开门见山,看看这个教程的主要任务,就去csdn博客,挖取技术文章,我以<第一行代码–安卓>的作者为例,将他在csdn发表的额博客信息都挖取出来.因为郭神是我在大学期间比较崇拜的对象之一.他 ...

  3. 爬虫6:多页面增量Java爬虫-sina主页

    之前写过很多单页面python爬虫,感觉python还是很好用的,这里用java总结一个多页面的爬虫,迭代爬取种子页面的所有链接的页面,全部保存在tmp路径下. 1 序言 实现这个爬虫需要两个数据结构 ...

  4. 推荐几个优秀的java爬虫项目

    java爬虫项目   大型的: Nutch apache/nutch · GitHub 适合做搜索引擎,分布式爬虫是其中一个功能. Heritrix internetarchive/heritrix3 ...

  5. Java爬虫搜索原理实现

    permike 原文 Java爬虫搜索原理实现 没事做,又研究了一下爬虫搜索,两三天时间总算是把原理闹的差不多了,基本实现了爬虫搜索的原理,本次实现还是俩程序,分别是按广度优先和深度优先完成的,广度优 ...

  6. JAVA爬虫 WebCollector

    JAVA爬虫 WebCollector 爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫. 爬虫 ...

  7. Java爬虫

    作为一位Java爬虫的初学者,分享一下自己的心得.所用到的jar包 org.codehaus.jettison.jar jsoup-1.7.3.jar个人认为爬虫的实现机制:获取Docume对象-&g ...

  8. 爬虫入门 手写一个Java爬虫

    本文内容 涞源于  罗刚 老师的 书籍 << 自己动手写网络爬虫一书 >> ; 本文将介绍 1: 网络爬虫的是做什么的?  2: 手动写一个简单的网络爬虫; 1: 网络爬虫是做 ...

  9. JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)

    WebMagic WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 采用HttpClient可以实现定向的爬虫,也可以自己编写算法逻辑来 ...

  10. MinerUtil.java 爬虫工具类

    MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...

随机推荐

  1. Error: Apache shutdown unexpectedly --解决

    原因1:端口占用,百度可解决 原因2: 配置的启动目录不存在~~~ 解决 修改默认目录:

  2. centos磁盘空间重新分配

    将/home目录压缩一部分空间到/ ref: https://serverfault.com/a/811124/434124 https://stackoverflow.com/a/19969471/ ...

  3. c#与wpf的一些基础语法问题(摘用)

    1 .在vs里不同cs文件,位于同一个namespace,是什么情况. 答:http://msdn.microsoft.com/zh-cn/library/0d941h9d(v=vs.80).aspx ...

  4. python中time模块和datetime模块

    time模块和datetime模块 时间分为三种模式(time 模块) 时间戳   (time.time()) 格式化字符串 (time.strftime(%Y-%m-%d %H:%M:%S %p)) ...

  5. 使用Docker搭建Tomcat运行环境

    1 准备宿主系统 准备一个 CentOS 7操作系统,具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: # uname -r 2 安装Do ...

  6. [C语言]在命令行编译执行程序

    ----------------------------------------------------------------------------------------- [开始] 1. 在M ...

  7. 原生js上传文件,使用new FormData()

    当创建一个内容较多的表单,表单里面又有了文件上传,文件上传也需要表单提交,单一的上传文件很好操作: <form action="接口" enctype="multi ...

  8. RMI 、RPC和SOAP

  9. mysql查询记录修改时间于现在大于30分钟

    (unix_timestamp(now())-`updatetime`)>1800

  10. 04_web基础(六)之请求转发与重定向

    1.交互方式 Web组件之间跳转: 从AServlet 跳转到 BServlet. 三种类型: 1:请求转发(forward) 2:URL重定向(redirect) 3:请求包含(include) 3 ...