爬虫获取智联招聘网数据

今天学习爬虫的网址是:https://sou.zhaopin.com/?jl=489&sf=0&st=0
(智联招聘网)
爬虫思路还是跟以前一样:一、找到网址入口请求访问获取网页字符串;二、解析数据;三、整理数据存档。
这里使用了第三方库requests
我这次实验中没有选定城市

获取网页字符串

1、在该网站上寻找需要的资源信息在哪里、发现,我们所需要的数据都在某一职业的招聘简介里。于是首先要获取每一职业简历的url。
2、寻找url规律的时候发现,pageSize参数是控制了每一页的数量,而start则是每一页的开端。改变start即可。

    def crawl(self, count):
        crawl_url = 'https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=90&cityId=489'.format(count)
        response = self.response(crawl_url, self.headers)  # 获取字符串
        url_list = self.parse(response)		# 解析每一职业建立的url存储到变量url_list
        for url in url_list:
            content = self.getContent(url)
            self.save(content)	# 对每一页内存进行存储

解析数据

1、看到了主界面的网页字符串发现该类型可以用json来进行解析。

    def parse(self, response):
        try:
            res = json.loads(response.text)['data']['results']
            if res:
                url_list = []
                for data in json.loads(response.text)['data']['results']:
                    job_url = data['positionURL']
                    url_list.append(job_url)
                return url_list
        except:
            return None

2、解析每一职业信息的数据,发现数据可以用正则提取。

    def parseSecond(self, response):
        try:
            res = re.findall('<script>__INITIAL_STATE__=(.*?)</script>', response.text, re.S)[0]
            res_json = json.loads(res)['jobInfo']['jobDetail']['detailedPosition']
            item_json = {}
            detail = {}
            c_add = res_json['workCity']
            c_num = res_json['recruitNumber']
            c_money = res_json['salary60']
            c_name = res_json['name']
            c_company = res_json['companyName']
            detail['公司名称'] = c_company
            detail['工作城市'] = c_add
            detail['招聘人数'] = c_num
            detail['工资情况'] = c_money
            item_json['name'] = c_name
            item_json['detail'] = detail
            return item_json
        except:
            return None

整理并存储数据

1、再编写一个main来理下逻辑。

    def main(self):
        count = 0
        for page in range(0, 10000, 90):
            self.crawl(page)
            count += 1
            print(count)

2、存储的话,在crwal方法里有调用到save。

    def save(self, content):
        # print(content)
        with open(path + "智联招牌网.json", "a", encoding='utf-8') as fp:
            fp.write(str(content) + ',')

效果图

在这里插入图片描述
注:本人技术有限,这个网址最多只爬取了1080条数据。共显示12页,每页90条。
如发现可以改进的地方或者哪里做得不好,希望大家能够提出多多交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hokool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值