用最沙雕的方式爬取智联招聘全站职位信息

承接上文的奇思妙想

这应该是目前我想到的最沙雕,最简单的遍历全站职位的方式

先随便打开一个智联的职位,往下拉取可以看到一个相似推荐用最沙雕的方式爬取智联招聘全站职位信息_第1张图片

我在写scrapy爬取智联的时候,突然发现这个相似推荐竟然是js异步加载的…(难怪我爬半天没找到数据)

用最沙雕的方式爬取智联招聘全站职位信息_第2张图片

访问request_URL,发现是json格式的内容

用最沙雕的方式爬取智联招聘全站职位信息_第3张图片
request_url后面的一堆东西,可以省略掉
这api需要我们拼接的就这个number=xxxxxxx

https://fe-api.zhaopin.com/c/i/similar-positions?number=CZ728922390J00241281708

而这个number 正好出现在了Json中,

那么此时,我有一个大胆的想法,

json中包含了 公司和职位的url,
我不断的替换这个number不就可以实现了全站信息的。。
多次替换number后发现,职位慢慢从设计类,转向了其他工作方向,证明这个方案行得通的

下面就直接上代码了…

import requests
import json

url = 'https://fe-api.zhaopin.com/c/i/similar-positions?number=CC340479015J00219702502'
# url_set = []
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0',
}


# 递归获取所有的api
def iter_url(urls):
    resp = requests.get(url=urls, headers=headers).text
    #number,职位,公司都在一个list下面,用json.loads获取到
    complex_lists = json.loads(resp)['data']['data']['list']
    #从list里面迭代找我们要的职位url和number
    for complex_list in complex_lists:
        # url_set.append(complex_list['positionURL'])
        # 这里url_set原本打算用set去重复的,先用str方便存入excel把
        url_set = ''.join(complex_list['positionURL'])
        number = ''.join(complex_list['number'])
        resp = requests.get('https://fe-api.zhaopin.com/c/i/similar-positions?number={0}'.format(number),
                            headers=headers)
        print(url_set)
        iter_url(resp.url)


iter_url(url)

别问我为啥没有用xpath那些方式的提取职位的具体信息,,csdn上一堆呢.要爬全站的倒是一个都没看见
要用scrapy可以直接点这个参考看看

要源码点这里

你可能感兴趣的:(爬虫)