2020,新一波北京积分落户又开始了。

在此,奉上去年闲来无事分析的19年北京积分落户的一些公开数据,把握一下猴年马月才能中标的趋势。

前半部分主要是技术环节,心急的可以直接跳到后半部分看具体的数据分析。

这本来应该是一篇关于Python爬虫爬取大数据并进行分析的故事,然而进行下去之后发现并不是那么回事儿。。。。

10月15日,2019年北京积分落户名单公布了,这是自去年以来的第二次。虽然再次“与女无瓜”,分数还差得老远,但是还是想看看榜上都是何方神圣,分析一下入围的秘方。

http://rsj.beijing.gov.cn/integralpublic/settleperson/settlePersonTable

人社局的这个网站看着着实麻烦,每页最多显示100条信息,今年一共6007人,那得翻60多页啊~~~~

这种麻烦事,必须用爬虫啊。

可,可我不会啊。。。。

于是乎,只能现上网搜教程,发挥我的学习能力了。

在众多Python爬虫方法中,我发现了一个叫做Pyspider的框架。这个方法非常好,优点在于是基于webUI界面的开发环境,支持任务监控,支持JS,支持多种数据库,对于爬虫新手,并且html不太熟的新手来说很友好。唯一缺点就是环境搭建各种的坑啊。起先是需要安装各种依赖包,什么PhantomJS、pycurl等等装了个遍。然后Python IDLE又运行不起来了,原来是Mac更新了10.15后不支持32bit程序了,需要升级Python到64bit的版本。等升级完Python 3.8以后,发现刚安装的Pyspider又启动不了。上网搜了下报错信息,是因为Python 3.7以后把async设为了关键字,与Pyspider框架中的async函数名重复了导致报错,最后我又一个一个py文件复查,更改冲突函数名,这才让小爬虫跑起来。这一折腾就半天过去了。

上网搜了几个Pyspider的案例,又详细看了下官方的doc文档,发现Pyspider确实比较容易上手的,demo程序几乎都是三段式或四段式结构:起先定义一个on_start()函数,然后是定义index_page()函数,最后是detail_page()函数用于储存结果,如果需要对结果进行筛选,还可以再定义一个on_result()函数。

对于Pyspider大体框架粗略学习了一通以后,找了一个比较接近本次爬虫需求的demo代码开始修改了。改着改着发现了重大问题!本次人社局这个名单的网址,并不会随着切换页面而改变啊。也就是说这个网址(http://rsj.beijing.gov.cn/integralpublic/settleperson/settlePersonTable),不论点击页面是那个第几页,依然显示同样的url,而不会像某些网页那样url后缀会变为page0,page1,page2等等。这样就导致一个问题——没法翻页。也就是说,在index_page()函数中,本应该定义循环翻页的操作就没法做了。

例如上面这段demo,就是根据url后面的page数值进行循环操作的

再次上网搜索后,居然又get到了新知识点。要不怎么说学无止境呢:原来这类型网页是使用了Ajax动态加载技术,可以在不重新加载整个网页的情况下,对网页的某部分进行更新。这种网页可能就是故意给我们这类爬虫新手制造困难的吧。对于这类网页,就需要对url进行解析了。

先使用Chrome浏览器打开积分落户名单网页。右键选择“检查”,进入开发者环境。之后在打开的窗口中菜单栏里选择Network。Network面板主要就是记录从发起网页页面请求Request后,分析http请求得到的各个资源信息。根据这些内容进行网络优化。当然,网优并非本次关注的内容,我们主要还是寄希望于可以从Request命令中看到真实的url地址。

参见图中标红处

Network面板打开后显示内容为空。我们在网页上依次点击几下落户名单页码看看会发生什么。当我们依次点击了页码2、3、4后,会看到Network面板上随点击出现了一些条目“tablePage“,这就是每次点击事件发出后的Request和Response。

点击页码就生成了一个一个的tablePage

我们点开一个条目进行查看,看到在Header标签下,给出一个Request URL http://rsj.beijing.gov.cn/integralpublic/settlePerson/tablePage,这就是网页上数据表格中内容被调用的真实路径,但这个路径还没完,接着往下看。

这是某一个网页页码对应的Request URL

在Header标签中移动到最底部。在Form data中选择view source,可以看到rows和page两个属性分别带有一些数值——“name=&rows=10&page=10”,这就是真实路径的第二部分。我们不断点选网页页码,可以看到rows=10是固定不变的,意味着每页显示10行信息;而page的数值,会随着网页页码的点击而变化,例如第一页page=1,第二页page=10,第三页page=20等等。

URL的后半截

接下来需要将两段url组合到一起,用“?”拼接,即“http://rsj.beijing.gov.cn/integralpublic/settlePerson/tablePage?name=&rows=10&page=0”。可以在浏览器中打开这个链接看一下,打开的就正是落户名单的第二页了。

注意看浏览器的网页地址

我突然意识到,如果人为修改这个rows和page的参数,能否以一页页面,显示所有6007条落户信息呢?通过修改rows=6007,page=0,再次在浏览器中打开,bravo,所有落户信息通过一张表格全部展现了。最后直接复制粘贴到EXCEL,完成。

那么问题来了。到底还需要继续pyspider爬虫来抓取数据吗?看来应该是不需要了吧。当然爬虫技术的学习并非告一段落,而是爬虫的工作范围可能更适用于需要定期刷新的和数据量更大的场景,像这种数据量较少的活儿,通过拼接个URL的方式可能更简单一些吧。

下面看一看今年积分落户名单能挖掘到哪些信息点呢?跟2018年名单相比,本次公布的名单少了身份证号一列,于是很重要的信息——落户前户籍属性,就无法进行分析。这其实是一个很有意思的挖掘点。

总体落户人群画像:75后,大学本科毕业,几乎毕业后就在京工作,就职于科技企业收入较高,并按照正常社会进度进行购房结婚的人士。

按年龄段来划分的话,本次落户人士更多落在了41~45岁区间。

19年落户人士的年龄最多集中在41岁(1978年),其次为42岁(1977年)和43岁(1976年),总体呈现正态分布的趋势。相比18年,人数峰值略微年轻1岁,但总体峰值人群依然集中在41~43岁。(如果靠连续两年数据来推断的话,峰值人群年龄有年轻化的趋势)。

2018年积分落户年龄分布(图片来自网络ProgramerFangL网友创作)

大多数人士的积分落在了94~94.99分数区间,更高分数形成了一个长尾。

由于榜单中各组织中,有存在多个组织隶属于同一总公司的情况。限于归类困难的原因,仅按照榜单公示的组织名称进行划分。其中,华为数字公司员工落户人数远超其他单位,是排名第二央视的近一倍了(如算上华为北研所的人数,将达到263人)。排在前列的公司中,科技类公司落户人数明显占多数。

从年龄与分数段交叉比较来看,现年40岁以下者取得高分的人数依然很低。由此看来,“年限”可能是分数拉开差距的最关键一环。

总体分析来看,按照目前趋势预估,41~43岁为积分落户成功率最高年龄,所以85年生人达到落户峰值大概在4~5年后。当前落户关键因素,社保满一年记3分,这是所有积分项里增幅最大者,一定保证社保不要断;其次,不要卖房,自有住房满一年记1分,也很关键;第三,一定要保证自己在接近落户最可能年限前,依然保持年纳税10万以上,这一项直接决定6分能否到手。

有余力的本科学历者,可以去考个非全日制硕士啥的,一次性就比本科生多11分了。然而这也是个悖论,你周末去上课去了,不加班,老板凭啥给你年纳税10万以上的工资呢。。。。。orz

再有就是,碰上狗屎运,能在自己岗位上好好干,干出点两弹一星相媲美的成绩的,申请个重大科技成果,一次性加个几十分就直接出现了啊。。。。。。

不要寄希望于路见不平拔刀相助,见义勇为还得看自身体质了。。。。。。

当然,后续的游戏规则怎样,还得看zf了。

datatables每页显示数据刷新后不变_2019北京积分落户名单数据的一些分析相关推荐

  1. Django删除数据表后,再重新生成新数据表

    删除数据表后,数据库的Django migrations数据未删除,如果直接命令行调用如下命令,是不会再生成数据表的 Python manager.py makemigrations Python m ...

  2. 堆栈(Strack)是指这样一段内存,它可以理解为一个筒结构,先放进筒中的数据被后放进筒中的数据“压住”,只有后放进筒中的数据都取出后,先放进去的数据才能被取出,称为“后进先出”。堆栈的长度可随意增加

    堆栈(Strack)是指这样一段内存,它可以理解为一个筒结构,先放进筒中的数据被后放进筒中的数据"压住",只有后放进筒中的数据都取出后,先放进去的数据才能被取出,称为"后 ...

  3. 2021年北京积分落户名单公布了,爬了两个多小时得到了所有数据,有了惊人的发现(附源码)

    2021年北京积分落户名单公布了,手痒痒就写了一段Java代码,运行了两个多小时,终于到了所有数据,如下截图: 本着"Talk is cheap, Show me the code.&quo ...

  4. 关于element-ui的分页器设置每一页显示数量(page-size)后页码并没有变化的问题与解决

    问题:element-ui的分页器在设置后,总页面数异常,不匹配总条数与单页显示数,设置page-size后页面也无变化 <ElPagination style="textAlign: ...

  5. 红石外汇 RedstoneFX|每日汇评:日元在央行温和数据发布后,等待美国关键通胀数据

    1.日元的软弱标志着日本央行仍处于鸽派时代: 2.政府的干预对美元/日元未来仍是一个波动的威胁: 3.关注黑田东彦动态和美联储首选的通胀指标的发布:   在日本央行10月份保持所有政策不变后,日元迎来 ...

  6. 数据更改后推送_合格的数据科学家,这些Github知识必须了解

    全文共2270字,预计学习时长5分钟 图片来源:Unsplash/HackCapital摄 版本控制经验已逐渐成为所有数据科学家的必要能力.版本控制可以帮助数据科学家更好地做团队工作.促进项目协作.共 ...

  7. vue请求数据完成后执行_生产库删除数据后怎样执行对应的undo sql来恢复数据?...

    概述 Oracle11g 闪回事务查询就是对过去某段时间内所完成的事务的查询和撤销,通过闪回事物分析,可以识别在一个特定的时间段内所发生的所有变化,也可以对数据库表进行事物级恢复. 前面提到可以审计一 ...

  8. uniapp 微信小程序分页方法:uni-pagination分页插件和上拉分页、下拉加载刷新、刷新后回到顶部

    1.uni-pagination分页插件 先去uniapp插件市场安装分页插件: uni-app官网https://uniapp.dcloud.io/component/uniui/uni-pagin ...

  9. bootstrap datatable 数据刷新问题

    在项目中,页面初始化的时候,通过通过向后台请求数据,页面初始化完之后,datatable是有数据的,当我点击页面的搜索按钮(按照时间过滤数据),datatable的数据要能重新刷新或者重载:这一点,我 ...

最新文章

  1. 离开硅谷11年后总结出的4条经验教训
  2. 【DIY】一个名叫“故事鸡”的儿童玩具是如何用树莓派3B+练成的
  3. No module named pycurl(无法使用yum和pip的情况下的解决方案)
  4. 设计模式之模板方法和策略模式的区别(一)
  5. java演练 循环嵌套 菱形图案的打印 四个阶段完成输出
  6. ADO.Net之SqlConnection、 Sqlcommand的应用(读书笔记1)
  7. http://www.raywenderlich.com/tutorials http://www.appcoda.com/tutorials/ http://www.entlib.net/
  8. 安装SQL Server 2005中文开发版后,界面变英文改中文解决方法
  9. 计算机安装了更新ie版本,win7重做后,发觉IE浏览器版本低,怎么办?今天教大家重装系统后,升级IE浏览器-win7版本...
  10. JavaWeb复习题(含答案)
  11. TPLink 无线网卡模拟AP无法上网问题
  12. 锁的实现原理—1,为什么会有锁?
  13. 计算机专业毕业设计选题与方向走势
  14. Pyecharts库及其与Django的结合使用
  15. 前端开发: 微信小程序 (文字,链接)生成二维码
  16. 中国最顶尖的黑客,连外国人都想拜他为师
  17. spring-boot整合druid配置
  18. 视频教程-React 全家桶从入门到实战到源码-其他
  19. linux发出声音的命令,在Linux中发出哔哔声C
  20. Git常规配置与用法(记录,git配置文件在系统用户文件夹下)

热门文章

  1. android8.1新功能,Android 8.1新特性:烦人的“正在后台运行”,拜拜
  2. linux无线网卡消失,linux下wpa/wpa2的无线网卡设置 [暂时还没有证实是否能用]
  3. 华为天才少年,竟然要我用充电宝打游戏!
  4. 【开源项目】特斯拉+树莓派实现车牌识别检测系统
  5. 基于PYNQ-Z2开发板实现矩阵乘法加速详细流程
  6. while(true) 循环中使用了sleep休眠了半小时就中断了_线程中断不是你想中断就能的...
  7. nio的应用 java_Java NIO 在网络编程中的应用
  8. 我的Java设计模式-建造者模式
  9. 《架构之美》阅读笔记01
  10. 使用mysqlbinlog恢复指定表