java爬虫爬取高考院校信息以及图片

本文介绍如何使用Java API爬取全国高校录取情况及院校图片。首先,爬取大学URL、CID和院校信息存储在MySQL数据库中,然后根据CID获取录取批次详情,最后利用CID下载并存储校园风光图片。所有操作都基于数据库操作,提供了详细的代码示例。
摘要由CSDN通过智能技术生成

javaAPI爬取全国高校录取情况以及院校图片

首先,为了能够能够爬取全国所有高校的录取情况以及其他信息,需要做到以下步骤:
1找到要爬取的所有大学的url
2开始爬取院校的cid、院校主页url、cname存入数据库,便于后面进一步利用这些关系爬取其他信息
3利用数据库中cid拼接url的方式爬取院校录取批次信息
4利用数据库中cid拼接url找到所有图片再发送httpclient下载图片

爬取全国院校以及cid存入数据库

该页面是全国高校的主页:https://www.baokaodaxue.com/bkdx/search/college
进入该页面之后可以利用谷歌的开发者工具,找到这个块标签,然后提取出其中想要的元素
主要代码如下

 //线程池
    private static final ExecutorService executorService = Executors.newCachedThreadPool();
    //阻塞队列,用于存放商品盒子li
    private static final BlockingQueue<Element> queueLi = new ArrayBlockingQueue<Element>(100);
    //阻塞队列,用于存放university
    private static final BlockingQueue<University> queuePhone = new ArrayBlockingQueue<University>(100);
    //爬取的首页
    private String url ="https://www.baokaodaxue.com/bkdx/search/college?dq=&type=&bz=&kp=&keywd=&page=1";
    //开始爬取
    public void start() throws IOException {

        final String sql = "insert into university(name,url,cid) values(?,?,?)";
        for (int i = 0; i < 10; i++) {
            executorService.execute(new Runnable() {
                public void run() {
                    QueryRunner queryRunner = new QueryRunner(JdbcUtils.getDataSource());
                    while (true) {
                        try {
                            University university = queuePhone.take();
                            queryRunner.update(sql,university.getName(),university.getUrl(),university.getCid());
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
        }
        //创建10个消费者(解析队列中存放的li)
        for (int i = 0; i < 10; i++) {
            executorService.execute(new Runnable() {
                public void run() {
                    //从队列中取出li进行解析
                    while (true) {
                        Element li = null;
                        try {
                            li = queueLi.take();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        University university = parseLi(li);
                        if (university != null) {
                            queuePhone.offer(university);
                        }
                    }
                }
            });
        }
        //获取首页
        CloseableHttpResponse indexRes = sendGet(url);
        //解析结果
        parseIndex(indexRes, 1);
    }
    //发送get请求,获取响应结果
    public CloseableHttpResponse sendGet(String url) throws IOException 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值