Boss直聘数据爬取并根据关键词和城市分析职位需求工资水平-数据爬取、预处理及入库

数据爬取、预处理及入库

目标设定

输入:职位关键词keyword和城市city_name,如key_word=Python开发,city_name=北京

输出:以输入参数为名的文档,如collections_name=Python开发_北京

爬取路径分析

通过网络抓包分析,页面URL路径为:https://www.zhipin.com/job_detail/?query=PYTHON&city=101010100&page=1

该路径也有其他变种,如city_id由query参数变为path参数,效果一样

关键参数

query:职位关键词

city:城市ID

page:当前页码

注意到参数中的城市ID为内部ID,需要建立城市名称与ID的映射

经过抓包找到了这个映射文件路径,https://www.zhipin.com/wapi/zpCommon/data/city.json

该json分为三部分:热点城市列表、当前所处城市,全国全量省份及城市列表,我们需要的只是全国城市列表,这里需要做下数据预处理

在这里插入图片描述

城市ID与名称映射文件预生成

通过上述路径下载的city.json重命名为china.json,然后进行分析处理生成真正的city.json,代码如下:

# -*- coding:utf-8 -*-
import json
import os

# 读取json文件
with open(os.path.join(os.path.dirname(__file__),'china.json'),'r',encoding='utf-8') as  f:
    china_list=json.loads(f.read())['zpData']

province_dict,city_dict={
   },{
   }

for province in china_list['cityList']:

    province_dict[province['name']]=province['code']

    for city in province['subLevelModelList']:
        city_dict[city['name']]=city['code']

# 生成省份列表,非必要
with open(os.path.join(os.path.dirname(__file__),'province.json'),'w',encoding='utf-8') as  f:
    f.write(str(province_dict).replace('\'','"'))

with open(os.path.join(os.path.dirname(__file__),'city.json'),'w'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值