Java爬取网页内容demo

一,初识jsoup

         jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据,可以看作是java版的jQuery。

        1. 获取数据源的方法:Document doc = Jsonp.connect("https://xxxxxx").get();

        2.Document 继承Element 类, 而Element类有个很好的方法select ,select 选择器几乎无所不能(百度: jsoup  select 学习更多选择器)。

<li class="dn on" data-dn="7d1">
  <h1>今天</h1>
  <h2>8日</h2>
  <big class="jpg50 d04"></big>
  <big class="jpg50 n04"></big>    
  <p class="wea" title="雷阵雨">雷阵雨</p>
  <p class="tem tem1"> <span>33</span><i>°C</i> </p>
  <p class="tem tem2"> <span>25</span><i>°C</i> </p>
  <p class="win">
    <em>
      <span id="mySpan" title="无持续风向" class="">无持续风向</span>
      <span title="无持续风向" class=""></span>
    </em>
    <i>微风</i>
  </p>
  <div class="slid">22</div>
</li>

         a. 通过标签名称进行查找:Elements elements = doc.select("h1");  

         b.通过 id 进行查找:Elements elements = doc.select("#mySpan"); 

         c.通过 class 名称进行查找:Elements elements = doc.select(".slid");

       

二,demo 获取新闻内容

    1.引入jar包:jsoup-1.6.1.jar。

    2.按f12,目标网页分析确定需要爬取的数据使用哪些选择器获取到数据,对自己要爬的数据的标签要熟悉。

package com.puboot.common.util;

import java.io.IOException;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
 
 
public class JsoupUtils {
 
	 /**
	  * 
	  * @param url 访问路径
	  * @return
	  */
     public  Document getDocument (String url){
         try {
        	 //通过Jsoup获取资源,5000是设置连接超时时间,单位ms
             return Jsoup.connect(url).timeout(5000).get();
         } catch (IOException e) {
             e.printStackTrace();
         }
         return null;
     }
 
 
 
     public static void main(String[] args) {
 
         JsoupUtils t = new JsoupUtils();
         Document doc = t.getDocument("https://baijiahao.baidu.com/s?id=1667756469242968479&wfr=spider&for=pc");
         //文章标题
         Elements elements1 = doc.select(".article-title");//通过 class名称进行查找,获取标题标签         
         System.out.println("文章标题: "+elements1.text());//从标签中获取标题
         
         //文章内容
         Elements elements2 = doc.select(".article-content");
         Elements elements3 = elements2.select(".bjh-p");
         System.out.println("文章内容: "+elements3.html());
         
         //图片
         Elements elements4 = doc.select(".large");
         List<String> eachAttr = elements4.eachAttr("src");
         for(int i=0; i<eachAttr.size();i++) {
        	 System.out.println("图片连接"+i+":"+eachAttr.get(i));       	
         }
         
         //文章来源
         Elements elements5 = doc.select(".author-name");
         System.out.println("文章来源: "+elements5.html());
         
         //发布时间
         Elements elements6 = doc.select(".date");
         Elements elements7 = doc.select(".time");
         System.out.println(elements6.html()+" "+elements7.html());
     }
}

不同的模板解析不同,根据具体需求解析。

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值