转:高考怎么填志愿把握大一些

原文链接

MemfireDB 邀请码:hm2tJQ


最近一亲戚咨询怎么填志愿把握大一些,让我想起了当年填志愿时的纠结~

当年分两派,有同学瞄准的是学校,有同学瞄准的是专业,当然还有牛b的一派同学两个都瞄准。

言归正传,这显然要做一定的数据分析的,作为程序员,碰到这类问题肯定知乎、Stack Overflow、Github一顿搜,

别说还真有:

https://github.com/haoruilee/python_spider

https://github.com/EasyData/gaokao

尝试跑了一下,效果不理想,难道要自己撸一个,感觉好麻烦,有兴趣的同学可以尝试一下。

这个过程中顺便发现已经有不少网站提供非常专业的高考数据服务了,尽管如此,还是想自己搞一下看看,恰好看到有大牛分享了一个工具,也尝试操作了一下,有点香,给大家分享一下。

写爬虫?这辈子不可能写爬虫的!juejin.cn

这个工具基本上不需要写代码,就能自己完成一次数据采集操作,下面是我用Dac从某网站上采集的北京大学在湖北省的录取分数的二手数据,只需要点两下鼠标就搞定了:

image

我们一步步来操作一下,感兴趣可以看看,不感兴趣直接看上面的原始分享,里面有很多技术方面的介绍。

这里给大家提个醒,工具只是用来方便大家获取信息的,只抓取自己需要的少量信息即可,尽量在目标网站不活跃的时间段执行,不要把别人服务器搞的压力太大,更加不能爬取非公开的信息尤其是个人信息。

从github上下载编译好的包(链接附在最后),有两个东东:

  • 1) Chrome浏览器插件:dac-extension-v0.1.1.zip
  • 2) 分析工具:dac-v0.1.1.zip

我们这里主要使用插件,感兴趣的可以玩一下分析工具。

准备工作

如果需要将抓取的数据长时间保存,方便后面查看分析,可以使用工具作者推荐的免费在线数据库:MemFireDB。注册之后,创建一个数据库,后面会用到,操作很简单这里就不细讲了。

安装插件

1)解压文件

插件安装比较简单,右键点击dac-extension-v0.1.1.zip,选择解压到dac-extension-v0.1.1

2)浏览器安装

在chrome浏览器地址栏输入:chrome://extensions , 会打开chrome的插件管理页面,激活右上角的开发者模式,此时会显示一行新的工具栏:

点击“加载已解压的扩展程序”按钮,然后选择刚刚解压出来的dac-extension-v0.1.1这个目录就ok了,此时点击地址栏左侧的“扩展程序”小图标,就会显示刚刚安装好的”Dac网页数据采集器”插件:

image.png

配置插件

紧接着上一步,我们点击“扩展程序”小图标之后,在列表中找到Dac插件,然后点击右侧的三个点的图标,然后点击“选项”:

正式抓数据之前,需要配置一下抓下来的数据的存放位置,这里可以使用原教程中推荐的免费在线数据库,注册之后点两下就可以用:MemFireDB

创建完数据库后,点击连接信息按钮可以看到访问数据库的方式:

复制相应的信息到插件的配置页面中,点击保存就完成了配置了,下面是Dac选项页面使用MemFireDB的配置方式:

image

ps:这里感觉可以加一个测试按钮,可以测试一下配置的是否正确,作者开源了工具的代码,有兴趣的可以去提个pr.

开抓数据

前面说了一堆,对于老手,应该三两下就搞定了,下面要开抓数据了。

1)打开你要抓数据的页面

我抓的是北京大学的数据:https://gkcx.eol.cn/school/31/provinceline

2)按F12,打开chrome的调试工具,最后面多了一个Dac Worker

这个图是我做好的抓取步骤,你打开应该是空白的,下面会一步步介绍怎么创建自己的数据采集器。

3)创建SiteMap

点击第三个菜单栏中的创建SiteMap菜单:(咦,还有一个导入按钮,去文末找彩蛋)

有两个框框需要输入,其中SiteMap名称可以随便输入,方便你自己区分多个采集器用的,我这里就用目标站点的域名;根URLs就是要抓取数据的第一个起始页面:

采集器会从这里的页面开始采集数据,可以配置多个页面。

如果页面有规律,可以用通配符来写,目前支持Numeric和Date两种通配符,例如:

这里的帮助提示应该是有个bug,Start和End之间应该是用中横线“-”而不是下划线“_”连接。

解释一下这个地址中通配符的含义:[30-100:1]

# 30-100表示让采集器自动采集 
https://gkcx.eol.cn/school/30/provinceline 
# 到 
https://gkcx.eol.cn/school/100/provinceline 
# 所有页面的数据 
# 冒号后面的数字1,表示从30跳到下个页面的加数,这里就表示加1 

4)选择器1:选择我们感兴趣的数据

上面我们创建了一个SiteMap,创建完成后会自动进入该SiteMap的编辑页面:

页面上的数据可能分布在不同的地方,需要通过不同的操作才能获取到数据,因此接下来的主要工作就是告诉采集器,第一步要做什么事,第二个做什么事,从而完成数据的采集,所有这些都是通过添加选择器来完成的。

那么就让我们从添加第一个选择器开始做起。

点击“添加新选择器”按钮,会弹出一个比较复杂的页面,第一次可能会比较懵,不要被复杂的页面吓到了,其实很简单,对于学校名称这个数据的抓取,我们只用关心前面三个项:ID、类型、选择器。

image
  • ID:自己输入一个用来表示当前所选内容的字符串,比如这里我准备抓取学校名称信息,就写了一个school。
  • 类型:对于绝大多数要抓取的数据,用默认的Text就好了,后面可以慢慢研究其他的类型。
  • 选择器:这里是最重要的一步,也很简单,点击选择按钮,然后尝试把鼠标移动到最上面北京大学这四个大字上,会发现页面变的可以选择了,点击北京大学这个位置就好了,然后记得要点击“生成选择器!”按钮:
image

对于学校名称这个数据,这个框中的其他地方都不用填,直接拉到最下面,点击“保存选择器”按钮就ok了。

5)选择器2:复杂交互数据的抓取

我们真正感兴趣的当然是北京大学各个专业历年在本省份的录取分数线,如下图所示,这里有一个交互,就是需要手动点击年份,才能看到对应年份的数据:

image

不要小看这一点点的交互,可以把很多爬虫脚本拦在门外,Dac在这方面比较好高,仍旧只需要点两下鼠标就能搞定:

  • 先创建一个选择器,该选择器的用途只有一个:点击年份这个地方,把年份菜单弹出来:

ID我们起名为year_control,类型选择倒数第二个:Element Click,这里需要注意的就是选择器和点击选择器,这两个都要进行点选,操作方法跟“选择器1”抓取学校名称的操作步骤一样,不同的是,这里需要对年份这个地方进行两次选择(选择器和点击选择器都选年份这个框),操作完之后是下面这个样子,如果不是这样,可能哪里忘记点了,请回头看看“选择器1”那一段的介绍。

image.png
  • 再创建一个类型是Element Click的选择器,名字为year_click,从名字上就能看出来,这个选择器的功能是挨个点击弹出的所有年份(我们要抓取这些年份的数据),这个选择器有一定的技巧,因为无法通过工具提供的选择按钮来选择弹出菜单中的元素,我们只能手动找到这个元素的选择方法,如下图所示,在页面上先点击2020这个选择框会弹出一个年份列表,此时我们在任意一个年份上点击右键,在弹出的浏览器菜单中点击“检查”菜单项:
image

会在调试工具中显示出该菜单的详细HTML代码,我们看到2015到2019这些页面元素都有相同的class:ant-select-dropdown-menu-item

image.png

了解一点HTML、CSS知识的同学应该都知道,这个class就是HTML元素的选择器,我们就用这个作为点击选择器手动填到Dac中:

聪明的你可能注意到了,要在class名字前面加一个点:.ant-select-dropdown-menu-item

这里还有一个注意事项,就是选择器还没填,选择器要包含点击选择器,所以选择器这里我们用常规方式(选择器1中介绍的方式)选择包含整个页面的最大框就好了。

为了能让Dac依次选择多个年份,需要勾选“是否爬取多个匹配值”复选框。

  • 上面两步创建的选择器只是辅助功能,让Dac帮你点击页面上的按钮,以切换到数据所在的页面,接下来就要实现真正的数据抓取选择器了。这里需要注意一下,我们希望每选择一个年份就去抓取该年份的对应数据,因此这个选择器需要做成year_click选择器的下一层选择器。如果跟year_click并排,Dac会先执行year_click选择器把所有的年份都点完一遍,再执行后面的选择器,显然是不行的。要想做一个year_click选择器的下一层选择器,操作很简单,直接点击year_click这个ID,就会进入下一层,进去之后就可以创建这一层的选择器了:
image.png
  • 专业分数线这里很明显是个表格,Dac提供了抓取表格的选择器类型

点击“添加新选择器”按钮后,ID起名为data,然后类型选择为Table

image

然后点击选择按钮,点击分数线表格的左上角位置(专业名称左侧空白处),会发现整个表被选中,点击“生成选择器!”按钮,在点击保存,完事。

image

6)打完收工

上面一套下来,把原本一个非常复杂的程序编写工作用Dac插件模拟人工操作比较简便的就搞定了,第一次操作感觉好复杂,做完一轮之后,其实就是点两下鼠标,不信你试试。

image.png

相关资源

  • 插件下载:https://github.com/wh0197m/dac
  • 直接可以导入使用的采集器,将下面内容保存为一个.json后缀的文件,然后导入即可体验:
{"_id":"eol","startUrls":["https://gkcx.eol.cn/school/[30-100:1]/provinceline"],"selectors":[{
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容

  • 随着高考制度改革,高考志愿填报越发成为考生和家长的关注重点。除了以往的线下志愿填报咨询外,更多的教育平台在...
    教评君阅读 9,267评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,535评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,187评论 4 8
  • 步骤:发微博01-导航栏内容 -> 发微博02-自定义TextView -> 发微博03-完善TextView和...
    dibadalu阅读 3,134评论 1 3
  • 回这一趟老家,心里多了两个疙瘩。第一是堂姐现在谈了一个有妇之夫,在她的语言中感觉,她不打算跟他有太长远的计划,这让...
    安九阅读 3,502评论 2 4