网络爬虫--jsoup大杀器

Jsoup:用于解析HTML,类似XML中的解析器。

Jsoup是一个Java的开源HTML解析器,可直接解析某个URL地址、HTML文本内容。

---------------------------------------------------------------------------------------------------------------------------

下面举两个例子,爬百度首页的内容和IT时代网的内容:


一:首先,得先收入依赖(jar包)

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

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

二:我这里就写一个测试类把,直接打印输出百度的内容:

1.首先进入www.baidu.com的首页,右击 查看源代码:

然后,根据其中的节点或者其它标签来得到你所想要的内容:

我这里就得到一些a标签和img标签的内容:

@Test
public void test(){
    try{
        Document document=Jsoup.connect("https://www.baidu.com/").get();

        Elements elements=document.select("a");
        for (Element element : elements) {
            System.out.println(element.text());
            //<a hred="www.baidu.com">百度首页</a>
        }
        Elements elements1=document.select("img");
        for (Element element : elements1) {
            String src=element.attr("src");
            System.out.println(src.replace("baidu","haha"));
            System.out.println(element.attr("src"));
        }
        System.out.println(document.title());
    }catch (Exception e){
        e.printStackTrace();
    }
}

三:IT时代网中的一些内容,这个主要根据其中的节点来获得其中的内容

通过层层递进,得到一个节点一个节点下面的内容:

如下:

@Test
       //IT时代网:
    public void test1(){
        try {
            Document document = Jsoup.connect("http://www.ittime.com.cn").get();
            //body > div:nth-child(4) > div > div.wrap_left.pull-left.content_L > div > ul.thisclass
            Elements elements=document.select("body").select("div:nth-child(4)").select("div").select("div.wrap_left.pull-left.content_L").select("div").select("ul.thisclass").select(".newsList");

            //输出节点的大小:
            System.out.println("节点大小"+elements.size());
            for (Element element : elements) {
                //body > div:nth-child(4) > div > div.wrap_left.pull-left.content_L > div > ul.thisclass > dl:nth-child(1) > dt
                //图片
                System.out.println("图片"+element.select("dt").select("a").select("img").attr("src"));
                //a标签:
                System.out.println("a标签:"+element.select("dd").select("h2").select("a").text());
                //p标签:
                System.out.println("p标签:"+element.select("dd").select("p").text());

            }

        }catch (Exception e){
            e.printStackTrace();
        }

    }

至于网络爬虫,最主要的就是通过查看其源代码了解中间的节点属性等,然后通过一些方法 就可以得到你所想要的内容,从而存入你想要存入得到地方。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值