全国专业分类及专业代码爬取

  • 数据结构分析
  • 数据抓取
  • 直接在浏览器执行js代码生成SQL语句

因业务的需求在网上找了半天的大学专业数据,好不容易找到一个完整的sql文件保存下来后还发现层级关关系是乱的 最后发现了这个网页:全国本科专业分类目录及专业代码查询 决定自己手动抓取数据

数据结构分析

查看页面发现分为基本专业和特设专业两块 但是我大致看了一些基本上差不多 所以就选中了基本专业
在浏览器页面按F12键后发现页面数据结构是一个表格 table 里面都是tr td标签

<table><tbody><tr class="firstRow">  <!-- 标题--><td><strong>专业代码</strong></td><td><strong>专业名称</strong></td></tr><tr><!-- 专业名称--><td><a name="b_zx"></a><strong>01</strong></td><td><strong>学科门类:哲学</strong></td></tr><tr><!-- 一级专业--><td><strong>0101</strong></td><td><strong>哲学类</strong></td></tr><tr><!-- 二级专业--><td>010101</td><td>哲学</td></tr>..........</tbody>
</table>

数据抓取

本来准备使用java的jsoup抓取数据顺便保存到数据库的 但是想到了JavaScript应为天生就是操作HTML的所以用起来方便一些

创建一个HTML文件拷贝页面的table表格 粘贴到body标签里面 复制方法如见下

爬取数据js代码

// 默认获取的是第一个table表
var zhuanye = document.querySelector("tbody");//选中第二个表//var zhuanye = document.querySelectorAll("tbody")[1];var list = zhuanye.children;var zhuanyeList = []; //json对象集合var index = -1; // 生成json对象时当前专的下标var nodeindex = -1; // 生成json时当前一级专业的下标var index1 = 0; //生成sql语句时当前专业的idvar index2 = 0; //生成专业时当前一级专业的idvar sqlList =[]; //sql集合for (var i = 1; i <list.length; i++) {var item = list[i].children;if(item[0].children.length> 0){var zhuanyeindex = item[0].innerText;// 如果当前元素是专业名if(zhuanyeindex.length ==2){// 专业名zhuanyeList.push({//创建一个对象 用于生成jsonid: item[0].innerText ,name:item[1].innerText,nodes:[]// 用于存放专业下的一级专业})index++;nodeindex = -1;//生成sql语句sqlList.push(getSQL(i,item[0].innerText,item[1].innerText,0));index1 = i;}else{// 一级专业zhuanyeList[index].nodes.push({//创建一个对象 用于生成jsonid: item[0].innerText ,name:item[1].innerText,nodes:[]// 用于存放一级专业下的二级专业});nodeindex++;//生成sql语句sqlList.push(getSQL(i,item[0].innerText,item[1].innerText,index1));index2 = i;}}else{//如果是二级专业zhuanyeList[index].nodes[nodeindex].nodes.push({//创建一个对象 用于生成jsonid: item[0].innerText ,name:item[1].innerText,})//生成sql语句sqlList.push(getSQL(i,item[0].innerText,item[1].innerText,index2));}}// 生成sql函数(方法)function getSQL(id,code,name,parentId){/***  数据库表结构CREATE TABLE `major`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '专业id',`code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '专业代码',`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '专业名称',`parentId` int(11) NULL DEFAULT NULL COMMENT '上级di',PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 457 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '专业表' ROW_FORMAT = Dynamic;*/var sql = "insert major(id,code,name,parentId) values("+id+",'"+code+"','"+name+"',"+parentId+")"return sql;}console.log(JSON.stringify(zhuanyeList)) // 吧集合转换成json字符串console.log("\n")//console.log(JSON.stringify(sqlList)) //吧集合转换成sql字符串 是个数组不能直接当SQL执行// 输出带格式的sqlsqlList.forEach(function(data){console.log(data+";\n")})

刚开始是直接生成的json字符串 准备再用java解析后保存到数据库 想着想着发现为啥不直接生成SQL语句简单省事 最后决定直接生成SQL语句
最后打开页面F12键选择Console就可以看见如下数据 点击Copy就可以复制啦

在数据库里面执行SQL语句之前记得先建表

CREATE TABLE `major`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '专业id',`code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '专业代码',`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '专业名称',`parentId` int(11) NULL DEFAULT NULL COMMENT '上级di',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 457 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '专业表' ROW_FORMAT = Dynamic;

建完表后执行生成的SQL就完事啦

直接在浏览器执行js代码生成SQL语句

直接在浏览器里面打开:全国本科专业分类目录及专业代码查询 按F12键选择Console 复制我上面的js代码 粘贴到里面 按回车键就可以得到生成sql语句了

这是我已经做好的完整SQL文件SQL文件

大学专业分类及专业代码爬取相关推荐

  1. python爬虫代码1000行-几行Python代码爬取3000+上市公司的信息

    几行Python代码爬取3000+上市公司的信息 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 几行Python代码爬取3000+上市公司的信息.txt ] (友情提示:右键 ...

  2. python爬上市公司信息_实战项目 1:5 行代码爬取国内所有上市公司信息

    实战项目 1:5 行代码爬取国内所有上市公司信息 Python入门爬虫与数据分析 在正式开始这门专栏课的学习之前,我们先来看一个简单的爬虫案例.兴趣是最好的老师,当你对爬虫产生兴趣的时候,才会更有动力 ...

  3. python中国最好大学排名_国内大学排名如何?用Python爬取中国大学排名

    国内大学排名如何?用Python爬取中国大学排名准备阶段需要的库robots协议上代码代码框架*获取url信息*解析信息*输出数据*主函数结果 准备阶段 新手入门,不喜勿喷,这篇文章的内容其实也是在中 ...

  4. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  5. 20行Python代码爬取王者荣耀全英雄皮肤改进版

    0 写在前面 看了大神的这篇CSDN:20行Python代码爬取王者荣耀全英雄皮肤访问量那么高,忍不住想要蹭一下热点,但是蹭归蹭,总得有点货才行,于是我品我细品,发现其代码总体有三点我觉得值得改进的地 ...

  6. 三行代码爬取京东数据

    文章目录 三行代码爬取京东数据 python学习 关于数据 关于代码 三行代码爬取京东数据 潦潦草草 python学习 了解python爬虫 python程序里,爬取网络数据的虫子叫爬虫,它的实质是模 ...

  7. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  8. [转载]20行Python代码爬取王者荣耀全英雄皮肤

    20行Python代码爬取王者荣耀全英雄皮肤,这是高手.原文链接: https://blog.csdn.net/qq_42453117/article/details/103190981 除了语言学习 ...

  9. 简单20行代码爬取王者荣耀官网1080p壁纸

    简单20行代码爬取王者荣耀官网1080p壁纸 # -*- coding: utf-8 -*- # @Time : 2020/12/13 18:08 # @Author : ningfangcong i ...

最新文章

  1. OpenStack技术峰会PPT集萃
  2. linux sysctl重启服务,Linux /etc/sysctl.conf重启没有生效
  3. 更改putty字体颜色
  4. 版本控制系统 之一 概念、分类、常见版本控制系统(CVS、SVN、BitKeeper、Git 等)
  5. ORACLE OMF介绍
  6. listview嵌套gridview
  7. 【qduoj - 142】 多重背包(0-1背包的另类处理,dp)
  8. C++之文件操作探究(二):读文件——文本文件
  9. 实战:Windows Server 2008 活动目录 传送和争夺操作主控角色
  10. jquery常用选择器和常用方法
  11. 强大的 actuator 服务监控与管理
  12. rh php70 php fpm,CentOS 7 配置php语言开发环境
  13. 《大前端进阶 Node.js》系列 必知必会必问(面试高频)
  14. 重温数据结构(C语言版)(第二版)
  15. andriod studio实现界面切换
  16. IntelliJ IDEA的安装及插件下载
  17. java 电商项目 搜索模块,SSH电商项目实战之十:商品类基本模块的搭建
  18. php 判断是否是机器人,PHP_php实现判断访问来路是否为搜索引擎机器人的方法,本文实例讲述了php实现判断访 - phpStudy...
  19. 双阶乘C语言,c阶乘公式(排列组合与阶乘)
  20. 大数据:Shell的操作(2)

热门文章

  1. 闲置遥控器升级改造,《豪杰遥控器》。
  2. anaconda打不开解决办法
  3. SOME/IP开源库Vsomeip E2E保护实现分析
  4. 基于pytorch实现Word2Vec(skip-gram+Negative Sampling)
  5. 视频融合平台EasyCVR集成播放器,但是无法播放该如何解决?
  6. lombok基本使用
  7. sql给表添加多个字段
  8. python读取odb进行abaqus结果显示_用python读取Abaqus结果的重音'S'
  9. 计算机英语广播,计算机专业英语词汇7-英语文章阅读-大耳朵英语 - 免费在线英语学习 口语练习 四级听力资料 在线翻译 网络课堂 英语社区...
  10. 股票数据的获取(tushare)