资讯专栏INFORMATION COLUMN

Java爬虫之爬取中国高校排名前100名并存入MongoDB中

jzzlee / 1089人阅读

摘要:介绍在博客爬虫爬取中国高校排名前名并写入中,我们利用来写爬虫,将中的大学排名表格爬取出来,并存入到中。本次分享将用的来实现相同的功能,并将爬取到的数据存入到数据库中。

介绍

  在博客:Python爬虫——爬取中国高校排名前100名并写入MySQL中,我们利用Python来写爬虫,将http://gaokao.xdf.cn/201702/1... 中的大学排名表格爬取出来,并存入到MySQL中。
  本次分享将用Java的Jsoup API来实现相同的功能,并将爬取到的数据存入到MongoDB数据库中。

准备

  我们将在Eclipse中写程序,因此,需要下载以下jar包:

bson-3.6.3.jar

jsoup-1.10.3.jar

mongodb-driver-3.6.3.jar

mongodb-driver-core-3.6.3.jar

新建webScraper项目和jsoupScraper包,并将以上jar包加入到项目路径中,如下图:

程序

  在jsoupScraper包下新建JsoupScaper.java文件,其完整代码如下:

package jsoupScraper;

/* 本爬虫利用Jsoup爬取中国大学排血排行榜前100名
 * 并将爬取后的结果存入到MongoDB数据库中
 */

import java.util.List;
import java.util.ArrayList;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.net.*;
import java.io.*;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class JsoupScraper {

    public static void main(String[] args) {
        String url = "http://gaokao.xdf.cn/201702/10612921.html";
        insertIntoMongoDB(url);   
    }

    // insertIntoMongoDB()函数:将爬取的表格数据插入到MongoDB中
    public static void insertIntoMongoDB(String url) {
        try{   
            // 连接到本地的 mongodb 服务
            MongoClient mongoClient = new MongoClient("localhost", 27017);
          
            // 连接到university数据库,不过该数据库不存在,则创建university数据库
            MongoDatabase mongoDatabase = mongoClient.getDatabase("university"); 
            System.out.println("Connect to database successfully");

            // 创建集合,该集合事先不存在
            mongoDatabase.createCollection("rank");
            System.out.println("集合创建成功");

            // 将爬取的表格数据作为文档分条插入到新建的集合中
            MongoCollection collection = mongoDatabase.getCollection("rank");
            System.out.println("集合 test 选择成功");
            
            List content = getContent(url);
            
            for(int i=2; i documents = new ArrayList();
                documents.add(document);
                collection.insertMany(documents);
                System.out.println("第"+i+"条文档插入成功");
                
            }
            
            // 关闭mongodb连接
            mongoClient.close();
            System.out.println("MongoDB连接已关闭");
         }
         catch(Exception e){
             e.printStackTrace();
         }
      }
    
    // getContent()函数,返回爬取的表格数据
    public static List getContent(String url){
        List content = new ArrayList();
        
        // 利用URL解析网址
        URL urlObj = null;
        try{
            urlObj = new URL(url);

        }
        catch(MalformedURLException e){
            System.out.println("The url was malformed!");
            return content;
        }

        // URL连接
        URLConnection urlCon = null;
        try{
            // 打开URL连接
            urlCon = urlObj.openConnection(); 
            // 将HTML内容解析成UTF-8格式
            Document doc = Jsoup.parse(urlCon.getInputStream(), "utf-8", url);
            // 刷选需要的网页内容
            Elements elems = doc.getElementsByTag("tbody").first().children();
            // 提取每个字段的文字部分
            content = elems.eachText();
            
            return content;
        }
        catch(IOException e){
            System.out.println("There was an error connecting to the URL");
            return content;
        }

    }
}
运行

  运行上述程序,结果如下:

  前往MongoDB数据库中查看,如下图:

结束语

  该爬虫其实并不复杂,实现的原理也很简单,我们已经用能Java和Python来实现了。希望以后能写一些关于Java爬虫的文章,欢迎大家交流~~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19243.html

相关文章

  • Java爬虫爬取高校排名100名并存入MongoDB

    摘要:介绍在博客爬虫爬取中国高校排名前名并写入中,我们利用来写爬虫,将中的大学排名表格爬取出来,并存入到中。本次分享将用的来实现相同的功能,并将爬取到的数据存入到数据库中。 介绍   在博客:Python爬虫——爬取中国高校排名前100名并写入MySQL中,我们利用Python来写爬虫,将http://gaokao.xdf.cn/201702/1... 中的大学排名表格爬取出来,并存入到My...

    GeekQiaQia 评论0 收藏0
  • Scrapy 实战爬取妹子图

    摘要:很多人学习爬虫的第一驱动力就是爬取各大网站的妹子图片,比如比较有名的。最后我们只需要运行程序,即可执行爬取,程序运行命名如下完整代码我已上传到微信公众号后台,在痴海公众号后台回复即可获取。本文首发于公众号痴海,后台回复即可获取最新编程资源。 showImg(https://segmentfault.com/img/remote/1460000016780800); 阅读文本大概需要 1...

    Achilles 评论0 收藏0
  • Python爬虫实战之爬淘宝商品并做数据分析,现在赚钱没点技术还真不行!

    摘要:二效果预览获取到数据之后做了下分析,最终做成了柱状图,鼠标移动可以看出具体的商品数量。在元之间的商品最多,越往后越少,看来大多数的产品都是定位为低端市场。最后就是销量前的店铺和链接了。 ...

    jsyzchen 评论0 收藏0
  • pyspider 实战项目爬取去哪儿

    摘要:现在我们用一个实战项目,来进一步掌握框架的使用。此次的项目爬取的目标是去哪儿网,我要将所有攻略的作者标题出发日期人均费用攻略正文等保存下来,存储到中。代表当前的爬取速率。 showImg(https://segmentfault.com/img/remote/1460000015563534); 阅读文本大概需要 13 分钟。 通过之前的文章介绍,你现在应该对 pyspider 有了一...

    banana_pi 评论0 收藏0
  • 零基础如何学爬虫技术

    摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...

    KunMinX 评论0 收藏0

发表评论

0条评论

jzzlee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<