Boss直聘Python爬虫实战
准备工作
-
新建项目-新建PythonFile
-
安装爬虫模块
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里面
通过观察: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 |
爬取城市代码
-
测试连接
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
<Response [200]>
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)
结果如下:
根据上图观察,返回的json可以当成是一个多层字典。
数据均在zpData\cityList
下,于是对zpData进行第一次解包。
对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) |
省和城市代码就爬取完毕了,直接粘贴到excel就可以。至于如何直接导出excel,后面再说。