java实现简单爬虫(使用Jsoup)完成搜狐新闻信息爬取

今天突发奇想,由于自己开发的项目是一个死的,任何东西都是自己发布的,因此是否可以实现一个简单爬虫,来让程序执行呢?

使用Jsoup来实现简单java网络爬虫。

Jsoup是一款Java的HTML解析器,主要用来对HTML代码的。他可以让你的java程序想JavaScript一样可以按标签查找你所需要的信息,Jsoup非常好的一点是即使网页中源码布局非常不规整,Jsoup都可以自动将HTML程序布局规整。Jsoup缺点就是,它只支持静态页面的爬取,比如今日头条,它是用js渲染得到的,就无法使用Jsoup来进行爬取了,这时需要使用Jsoup+HttpUnit来实现。 Jsoup使用文档:Jsoup开发指南

今天以搜狐新闻为例来爬取信息。

第一步导入Maven依赖:

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

接下来示范代码,爬取的是搜狐新闻一部分的信息(并没有全部爬下来),主要是用法,实现代码如下(其中夹杂一下我的过程处理代码,比如for循环中的各个if语句,可以根据自己需求来设置):

package com.jsoup;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.*;
// 爬取搜狐新闻部分信息
public class JsoupTest {
    public static void main(String[] args) throws IOException {
        Document doc = Jsoup.connect("http://news.sohu.com/").get();
        // 2.jsoup获取新闻<a>标签
        Elements newsATags = doc.select("div.main-right")
                .select("div.list16")
                .select("ul")
                .select("li")
                .select("a");
        for (Element element:newsATags){
            String url=element.attr("href");
            if(url.indexOf("//")==0 || url.indexOf("http://www.sohu.com/a/")<0)
                continue;
            String title=element.attr("title");
            Document dm=Jsoup.connect(url).get();
            Elements em=dm.select("p").select("img");
            if(em==null || em.size()<1)
                continue;
            String img=em.get(0).attr("src");
            if(img.indexOf("//")==0){
                img=img.substring(2);
            }
            System.out.println("url: "+url+"  title: "+title+" image: "+img);
        }
    }
}

输出结果如下:

url: http://www.sohu.com/a/335820336_123753  title: 港媒列示威者“十宗罪” 追问港铁为何“双标”对待 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/bbd7b2428b4140bbbcd5700a8586d4f8.jpeg
url: http://www.sohu.com/a/335822258_162522  title: 内地游客在香港当街被抢 手及腹部受伤损失1万余元人民币 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/75a02160ae204190aac9e9b0da421462.png
url: http://www.sohu.com/a/335777751_115479  title: 紧随脸书推特 YouTube删除210个涉港账号 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/bcf3e8b456764af6a304fec6cc7dc9f2.jpeg
url: http://www.sohu.com/a/335802361_255783  title: 31省份低保标准公布:上海、北京、天津位居前三 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/ea2815c332c3467abfec544afcf81404.jpeg
url: http://www.sohu.com/a/335758053_114988  title: 工信部:达量限速套餐等影响网速 4G至少还能用10年 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/7e294992779f492e9de2d90be4195971.png
url: http://www.sohu.com/a/335694211_114731  title: 浦东新区消保委:上海迪士尼不接受调解 坚持翻包检查 image: http://5b0988e595225.cdn.sohucs.com/images/20190822/ac4b1e3ff1dd4808953bcc0901a85540.jpeg
url: http://www.sohu.com/a/335849077_260616  title: 大学老师不写论文都可以评教授?高校回应 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/9514475ee6704639a893339e3408dcc0.jpeg
url: http://www.sohu.com/a/335820714_114988  title: 任正非:不会求美国放华为一马 不在贸易协议中委曲求全 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/1926f19b3f514acfb66912476de88414.jpeg
url: http://www.sohu.com/a/335842974_313745  title: 河南被性侵坠亡女生家属:对方曾称愿赔200万了事 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/eb81c99ce8ab45d093e0d065837ef1f3.jpeg
url: http://www.sohu.com/a/335818093_162522  title: 加拿大驻香港总领事馆:暂停本地雇员去中国内地 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/32f8257bbbfd4e9f92acab71cb36133e.png
url: http://www.sohu.com/a/335826307_114988  title: “亚马孙雨林要烧没了” 一场虚假传播如何在全球掀起? image: http://5b0988e595225.cdn.sohucs.com/images/20190823/0b90fadb707440728375a352b99fc951.png
url: http://www.sohu.com/a/335789284_115376  title: 英国首相踩桌子让马克龙擦鞋?这张照片让网友吵翻了(图) image: http://5b0988e595225.cdn.sohucs.com/images/20190823/e7268e7ad6494ba6b6e38fb73734a940.jpeg
url: http://www.sohu.com/a/335751943_260616  title: 特朗普为何要购买格陵兰岛?或看上其军事价值和稀土 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/0832d2f89b814eca865bd48a5263842a.jpeg
url: http://www.sohu.com/a/335726075_120044203  title: 哈尔滨一街道多个仓库被淹 商户:未接到水库泄洪通知 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/8f6eb19b7578486c9f487f5fca0027c4.jpeg
url: http://www.sohu.com/a/335840681_260616  title: 四川丹巴警方通报“女子深夜当街遭男子踢打”:涉案人已到案 image: http://5b0988e595225.cdn.sohucs.com/images/20190823/51bd5080a5314c24ab0fb97266674db9.jpeg
等等。。。。。

在来一段爬取搜狐娱乐的爬虫代码(和上面一样只爬取一部分代码),实现如下:

package com.jsoup;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.*;

public class JsoupTest2 {
    public static void main(String[] args) throws IOException {
        Document document= Jsoup.connect("http://yule.sohu.com/").get();
        Elements elements=document.select("div.passage-info");
        for (Element element:elements){
            String url=element.select("div.passage-content").select("a").attr("href");
            if(url.indexOf("//")==0) url=url.substring(2);
            url="http://"+url;
            String title=element.select("div.passage-content").select("a").text();
            String image=element.select("div.passage-image").select("img").attr("src");
            if(image.indexOf("//")==0) image=image.substring(2);
            int firstDot=image.indexOf("/");
            String pre=image.substring(0,firstDot);
            int lastDot=image.indexOf("images");
            String end=image.substring(lastDot);
            image="http://"+pre+"/"+end;
            System.out.println("url: "+url+"  title: "+title+"  image: "+image);
        }
        System.out.println("OK...");
    }
}

输出结果如下:

url: http://www.sohu.com/a/193472498_103758  title: 淡出谢娜晒照刷存在脖子戴金锁,但金锁范冰冰戴鸽子蛋,对比寒酸   image: http://5b0988e595225.cdn.sohucs.com/images/20190822/75529fb0f1004fc59a74e3cdc76ae204.jpg
url: http://www.sohu.com/a/335784170_220938  title: 为张翰减肥,把胡彦斌写在书里的郑爽,这次直接把张恒带进了节目   image: http://5b0988e595225.cdn.sohucs.com/images/20190823/52e6e3292ad54212aa6fac6c0bac3d7b.jpeg
url: http://www.sohu.com/a/335692224_424446  title: 郑爽与张翰同框是男友张恒特意安排,昔日感情如今已经彻底放下   image: http://5b0988e595225.cdn.sohucs.com/images/20190822/4295a9ef311547b7a247a7b87639da37.jpg
url: http://www.sohu.com/a/335763327_433773  title: 沈腾为儿子办周岁,“小狮子”可爱呆萌,老婆王琦发福似贾玲   image: http://5b0988e595225.cdn.sohucs.com/images/20190823/39b3112246924d6a8f5cd65c576607fb.jpeg
url: http://www.sohu.com/a/335627609_424446  title: 徐峥在线撒糖,表白妻子陶虹:陶虹是大家的,但我是她的私有财产   image: http://5b0988e595225.cdn.sohucs.com/images/20190822/2d3c77b52bff4033ab045d155ddddcf4.jpeg
等等。。。

 

OK,以上就是使用Jsoup实现的java爬虫,项目代码没办法在这展示,这里就用两个test类来简单实现一下。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值