ProgramerFangL 发表于 2018-10-16 17:57

使用python爬取数据并分析2018北京积分落户情况

本帖最后由 ProgramerFangL 于 2018-10-17 10:59 编辑

昨天北京市人保局公布了2018年的积分落户名单,看到一群大佬的积分以后,作为小菜鸟的我只能感叹大佬是真的大佬。心血来潮之下,决定把大佬们的数据爬下来,研究一下成功的秘诀。
首先分享一下爬虫的代码。在找到页面请求的url后,通过查看返回值得到,数据共有6019条,602页。继续对参数进行调试,发现翻页只需要改变page参数即可。到此简单的爬虫思路就OK了。然后简单粗暴的直接爬取入库。代码如下。
```
#-*-coding:utf-8-*-
import urllib2
import time
import MySQLdb
import json
import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
      reload(sys)
      sys.setdefaultencoding(defaultencoding)
db = MySQLdb.connect("localhost", "root", "root", "py", charset='utf8' )
cursor = db.cursor()
pageNum = 1
page = 0
while(page < 6020):
    try:
      page = (pageNum - 1) * 10
      initUrl = "http://www.bjrbj.gov.cn/integralpublic/settlePerson/settlePersonJson?sort=pxid&order=asc&limit=10&offset=10&name=&rows=10&page=%s" %page
      print initUrl
      req = urllib2.Request(initUrl.encode('utf8'))
      htmlContent = urllib2.urlopen(req, timeout=5).read()
      htmlContent = htmlContent.decode("gbk")
      js = json.loads(htmlContent)
      rows = js['rows']
      for row in rows:
            area = {"11": "北京", "12": "天津", "13": "河北", "14": "山西", "15": "内蒙古", "21": "辽宁", "22": "吉林", "23": "黑龙江",
                "31": "上海", "32": "江苏", "33": "浙江", "34": "安徽", "35": "福建", "36": "江西", "37": "山东", "41": "河南",
                "42": "湖北", "43": "湖南", "44": "广东", "45": "广西", "46": "海南", "50": "重庆", "51": "四川", "52": "贵州",
                "53": "云南", "54": "西藏", "61": "陕西", "62": "甘肃", "63": "青海", "64": "宁夏", "65": "新疆", "71": "台湾",
                "81": "香港", "82": "澳门", "91": "国外"}
            row = json.dumps(row)
            row = json.loads(row)
            name = row['name']
            idCard = row['idCard']
            score = row['score']
            unit = row['unit']
            province = area]
            year = idCard
            sql = "insert into bjrbj(name,city,score,unit,idCard,year)values('%s','%s','%s','%s','%s','%s')"%(name,province,score,unit,idCard,year)
            try:
                cursor.execute(sql)
                db.commit()
            except:
                print "出错了!!"
                db.rollback()
      time.sleep(1)
      pageNum = pageNum+1
    except :
      continue
```
数据入库后如图所示:

好啦。数据入库后就可以开始我们的分析了
先来看一波大佬们的公司top10:

大厂就是大厂,华为作为老大哥,看来不是没有道理的,员工实力都很强,数据遥遥领先。
接下来是省份分析:

可以看到,主要的人员大部分来自于京津冀及周边辐射地区。
最后是一波年龄统计。

看到大佬们的年龄各位是不是顿时就平衡了,原来不是我们太弱,是因为我们和大佬之间还差了20岁(手动滑稽)
到此为止,这次心血来潮的分析就结束了,该去继续加班了{:1_937:}

出图代码放在了这儿使用python爬取数据并分析2018北京积分落户情况【出图代码】

求免费的评分啊哥哥们

ProgramerFangL 发表于 2018-10-17 10:45

免费的积分给点儿呗伙计们

ProgramerFangL 发表于 2018-10-17 14:22

shezexin 发表于 2018-10-17 10:04
忽然有了学习python的兴趣。。。。楼主大大有什么学习资源推荐吗?

其实我也没入门。。。{:1_907:}

ProgramerFangL 发表于 2018-10-17 23:56

玩世不攻 发表于 2018-10-17 23:42
为什么现在没有idCard的数据了

idCard是隐藏数据,页面上并没有展示。

february 发表于 2018-10-16 18:22

楼主,那统计图也是python做的么?

沐雨红尘 发表于 2018-10-16 18:24

ProgramerFangL 发表于 2018-10-16 18:54

统计图也是py做的,明天有空把代码给你们放上来

Qnly_genius 发表于 2018-10-16 19:51

february 发表于 2018-10-16 18:22
楼主,那统计图也是python做的么?

pyecharts
http://pyecharts.org/

流浪的二胡 发表于 2018-10-16 20:07

厉害,谢谢楼主!回去研究研究

simpanic 发表于 2018-10-16 20:46

楼主果然牛牛

victory6688 发表于 2018-10-16 21:26

看一下,了解一下

shezexin 发表于 2018-10-17 10:04

忽然有了学习python的兴趣。。。。楼主大大有什么学习资源推荐吗?

nj19 发表于 2018-10-17 10:33

膜拜中,!!!
页: [1] 2 3
查看完整版本: 使用python爬取数据并分析2018北京积分落户情况