itext 当前页数 总页数_总耗时4秒爬取2.7W数据!简单的java爬虫Jsoup

点击上方“代码集中营”,设为星标

优秀文章,第一时间送达!

前言:有时候可能需要从网上或者某个网站收集一些数据,这时候就可以用爬虫来实现,不需要手动去收集费时费力。本文使用java的jsoup来实现。

前置条件

  1. JAVA基础:https://www.runoob.com/java/java-tutorial.html

  2. 有安装可运行java的编译器(idea等)

  3. 有安装mysql(可百度如何安装mysql)

  4. 有安装数据库管理工具(Navicat Premium 12等)

  5. 用到的jar包

    1. jsoup-1.11.3.jar

    2. mysql-connector-java-8.0.16.jar

    3. jar下载(搜索下载):https://mvnrepository.com/

准备工作

  1. 寻找目标网站

    1. 因为要简单粗暴,所以找了一个爬取逻辑不复杂的网站

    2. 本文所爬目标网站:https://chengyu.911cha.com/pinyin_a_p1.html

  2. 在数据库中新建一个表

    1. 表名任意、字段任意(例:id、首字母、成语、个数)

    2. 具体百度“如何用Navicat新建表和添加字段”

分析目标网站

  • 第一步

    • 在浏览器中按F12观察该网站HTML代码

      3c3ddaef595754fbdda795b7461fdb7f.png

    • 谷歌浏览器为例,可以按ctrl+shift+c。鼠标移动到网页任意地方,右边的代码框会显示当前鼠标停留处的代码。

    • 网站看起来结构并不复杂,甚至还有点整齐。英文字母A-Z一字排开整齐放好了,意味着写爬虫代码时可以不用自己手动输入英文字母A-Z,后面会提到如何自动获取英文字母。

  • 第二步

    • 这是网页分页部分的html代码,会发现多页时代码中会有5个a标签。那么要计算一共有多少也可以用a标签的个数减去2就是真实页数了。

        <div class="gclear pp bt center f14">
          <span class="gray">首页span>
          <a href="pinyin_a_p3.html">末页a>
          <span class="gray">|span>
          <a href="pinyin_a.html" class="red noline">1a>
          <a href="pinyin_a_p2.html">2a>
          <a href="pinyin_a_p3.html">3a>
          <span class="gray">|span>
          <span class="gray">上一页span>
          <a href="pinyin_a_p2.html">下一页a>
        div>
    • 这个网页还存在另一种情况,比如字母o的成语中a标签只有一个那这种就不用减2了。

        
      class="gclear pp bt center f14">class="gray">首页class="gray">末页class="gray">|"pinyin_o.html" class="red noline">1class="gray">|class="gray">上一页class="gray">下一页

开始写代码

  • 项目结构

    551655f3a0f9b3fc7383f5c1c1e7e1b9.png

  • 具体代码

  1. Idioms.class

    public class Idioms {
          
        private String letter;
        private String content;
        private int num;

        public String getLetter() {
            return letter;
        }

        public void setLetter(String letter) {
            this.letter = letter;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }

        public int getNum() {
            return num;
        }

        public void setNum(int num) {
            this.num = num;
        }
    }
  2. IdiomsThread.class

    public class IdiomsThread implements Runnable {
          
        CallBack callBack;
        long startTime = System.currentTimeMillis();
        long endTime;
        String letter;
        int letterCount = 0;

        private synchronized void insertData(List idiomsList) {
            String sql = "insert into 表名 values";
            for (int i = 0; i             if (i == 0) {
                    sql = sql + "(id,\'" + idiomsList.get(i).getLetter()
                         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值