Boss直聘Python爬虫实战

准备工作

  • 新建项目-新建PythonFile

  • 安装爬虫模块Boss直聘Python爬虫实战_第1张图片

    1
    
    pip install requests
    
  • requests的常用函数

    • request.get(),对应http协议的get请求,也就是把网页下载下来。
    • request.post(),对应Http协议的post请求,就是把数据上传到网页服务器。
  • 观察boss直聘的url。

    1
    
    https://www.zhipin.com/c101250100-p110101/
    
    • 通过观察发现,后面应该是城市代码和职位代码
    • 通过检查-network发现,城市代码应该是储存在city.json里面
    • 职位代码应该是储存在position.json里面

Boss直聘Python爬虫实战_第2张图片

Boss直聘Python爬虫实战_第3张图片

通过观察:city.json的url为

1
https://www.zhipin.com/wapi/zpCommon/data/city.json

postion.json的url为

1
https://www.zhipin.com/wapi/zpCommon/data/position.json

Boss直聘Python爬虫实战_第4张图片

爬取城市代码

  • 测试连接

    1
    2
    3
    4
    5
    
    import requests
    # requests-->请求
    url = 'https://www.zhipin.com/wapi/zpCommon/data/city.json'  # boss直聘城市链接
    response = requests.get(url)  
    print(response)  # 打印响应
    

    返回值:

    1
    
    
    

    200:代表返回成功

    404:网络连接失败

    500:服务器奔溃

  • 加入浏览器伪装头’user-agent’,防止被服务器发现你是爬虫

    1
    
    headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'}
    
  • 第一次打印

    1
    2
    3
    4
    5
    6
    7
    8
    
    import requests
    from pprint import pprint
    url = 'https://www.zhipin.com/wapi/zpCommon/data/city.json'  # boss直聘城市代码
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) \
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'}
    response = requests.get(url, headers=headers)
    data = response.json()  # 从返回对象中提取json
    pprint(data)
    

    结果如下:

    Boss直聘Python爬虫实战_第5张图片

    根据上图观察,返回的json可以当成是一个多层字典。

数据均在zpData\cityList下,于是对zpData进行第一次解包。

Boss直聘Python爬虫实战_第6张图片

对cityList进行第二次解包。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import requests
from pprint import pprint
url = 'https://www.zhipin.com/wapi/zpCommon/data/city.json'  # boss直聘城市代码
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'}
response = requests.get(url, headers=headers)
data = response.json()  # 从返回对象中提取json
data1 = data['zpData']['cityList']
# pprint(data1)
for ii in data1:
    province = ii['name']  # 省名
    province_code = ii['code']  # 省对应的代码
    city_list = ii['subLevelModelList']
    for ci in city_list:
      city = ci['name']  # 城市名
        city_code = ci['code']  # 城市代码
      print(province, '\t', province_code, '\t', city, '\t', city_code)

Boss直聘Python爬虫实战_第7张图片

省和城市代码就爬取完毕了,直接粘贴到excel就可以。至于如何直接导出excel,后面再说。

你可能感兴趣的:(Boss直聘Python爬虫实战)