由于项目需求,综合了几种考虑方案,准备使用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();

 

posted on 2018-09-02 11:52  iscys  阅读(516)  评论(0编辑  收藏  举报