大学专业分类及专业代码爬取
全国专业分类及专业代码爬取
- 数据结构分析
- 数据抓取
- 直接在浏览器执行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文件
大学专业分类及专业代码爬取相关推荐
- python爬虫代码1000行-几行Python代码爬取3000+上市公司的信息
几行Python代码爬取3000+上市公司的信息 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 几行Python代码爬取3000+上市公司的信息.txt ] (友情提示:右键 ...
- python爬上市公司信息_实战项目 1:5 行代码爬取国内所有上市公司信息
实战项目 1:5 行代码爬取国内所有上市公司信息 Python入门爬虫与数据分析 在正式开始这门专栏课的学习之前,我们先来看一个简单的爬虫案例.兴趣是最好的老师,当你对爬虫产生兴趣的时候,才会更有动力 ...
- python中国最好大学排名_国内大学排名如何?用Python爬取中国大学排名
国内大学排名如何?用Python爬取中国大学排名准备阶段需要的库robots协议上代码代码框架*获取url信息*解析信息*输出数据*主函数结果 准备阶段 新手入门,不喜勿喷,这篇文章的内容其实也是在中 ...
- pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...
爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...
- 20行Python代码爬取王者荣耀全英雄皮肤改进版
0 写在前面 看了大神的这篇CSDN:20行Python代码爬取王者荣耀全英雄皮肤访问量那么高,忍不住想要蹭一下热点,但是蹭归蹭,总得有点货才行,于是我品我细品,发现其代码总体有三点我觉得值得改进的地 ...
- 三行代码爬取京东数据
文章目录 三行代码爬取京东数据 python学习 关于数据 关于代码 三行代码爬取京东数据 潦潦草草 python学习 了解python爬虫 python程序里,爬取网络数据的虫子叫爬虫,它的实质是模 ...
- Python爬虫利用18行代码爬取虎牙上百张小姐姐图片
Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...
- [转载]20行Python代码爬取王者荣耀全英雄皮肤
20行Python代码爬取王者荣耀全英雄皮肤,这是高手.原文链接: https://blog.csdn.net/qq_42453117/article/details/103190981 除了语言学习 ...
- 简单20行代码爬取王者荣耀官网1080p壁纸
简单20行代码爬取王者荣耀官网1080p壁纸 # -*- coding: utf-8 -*- # @Time : 2020/12/13 18:08 # @Author : ningfangcong i ...
最新文章
- OpenStack技术峰会PPT集萃
- linux sysctl重启服务,Linux /etc/sysctl.conf重启没有生效
- 更改putty字体颜色
- 版本控制系统 之一 概念、分类、常见版本控制系统(CVS、SVN、BitKeeper、Git 等)
- ORACLE OMF介绍
- listview嵌套gridview
- 【qduoj - 142】 多重背包(0-1背包的另类处理,dp)
- C++之文件操作探究(二):读文件——文本文件
- 实战:Windows Server 2008 活动目录 传送和争夺操作主控角色
- jquery常用选择器和常用方法
- 强大的 actuator 服务监控与管理
- rh php70 php fpm,CentOS 7 配置php语言开发环境
- 《大前端进阶 Node.js》系列 必知必会必问(面试高频)
- 重温数据结构(C语言版)(第二版)
- andriod studio实现界面切换
- IntelliJ IDEA的安装及插件下载
- java 电商项目 搜索模块,SSH电商项目实战之十:商品类基本模块的搭建
- php 判断是否是机器人,PHP_php实现判断访问来路是否为搜索引擎机器人的方法,本文实例讲述了php实现判断访 - phpStudy...
- 双阶乘C语言,c阶乘公式(排列组合与阶乘)
- 大数据:Shell的操作(2)
热门文章
- 闲置遥控器升级改造,《豪杰遥控器》。
- anaconda打不开解决办法
- SOME/IP开源库Vsomeip E2E保护实现分析
- 基于pytorch实现Word2Vec(skip-gram+Negative Sampling)
- 视频融合平台EasyCVR集成播放器,但是无法播放该如何解决?
- lombok基本使用
- sql给表添加多个字段
- python读取odb进行abaqus结果显示_用python读取Abaqus结果的重音'S'
- 计算机英语广播,计算机专业英语词汇7-英语文章阅读-大耳朵英语 - 免费在线英语学习 口语练习 四级听力资料 在线翻译 网络课堂 英语社区...
- 股票数据的获取(tushare)