智联招聘爬虫

import requests
from bs4 import BeautifulSoup
import pandas as pd
from pandas import DataFrame,Series
import json
url="https://fe-api.zhaopin.com/c/i/sou"
params={   #参数
    'start': '90',
    'pageSize': '90',
    'cityId': '489',
    'workExperience': '-1',
    'education': '-1',
    'companyType': '-1',
    'employmentType': '-1',
    'jobWelfareTag': '-1',
    'kw': 'python',
    'kt': '3',
}
headers={ #头部信息
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
    
}
url1="https://jobs.zhaopin.com/%s.htm"


class Spider():
    def __init__(self):
        self.word=input("请输入关键词:")
        page=input("请输入页数:")
        #self.word='python'
        #page=2
        params['kw']=self.word   #更改请求的关键词
        self.df=DataFrame()   #创建一个DataFrame对象
        self.columns=['职位名称','工资','更新时间','地点','公司名称','需求人数','学历','工作经验','职责']   #列名
        for i in range(0,int(page)*90,90):
            print(i)
            params['start']=i   #更改开始页的页数
            try:
                r=requests.get(url,params=params,headers=headers,timeout=10)   #请求数据,加上try except防止请求失败程序停止
            except:
                continue
            r.encoding='utf-8'  #更改编码格式
            self.get_data(r.text)  #调用函数,函数是爬去数据,上面的所有都是用来请求的,这个函数才是解析请求返回来的数据的
            
    def get_data(self,text):
        js=json.loads(text)
        for i in js['data']['results']:
            idd=i['number']   #id
            title=i['jobName']  #职位名称
            #print(title)
            salary=i['salary']  #工资
            updateDate=i['updateDate']  #更新时间
            place=i['city']['display']   #工作地点
            company=i['company']['name']   #公司名称
            recruitCount=i['recruitCount']   #需求人数
            eduLevel=i['eduLevel']['name']   #学历
            workingExp=i['workingExp']['name']   #工作经验
            u1=url1%idd   #更改详情页的url,
            zhize=self.get_zhize(u1)  #调用这个函数是为了爬取详情页页面的职责的
            data=[title,salary,updateDate,place,company,recruitCount,eduLevel,workingExp,zhize]  #所有的字段都整理成一个列表
            self.df=self.df.append(Series(data,index=self.columns),ignore_index=True)   #添加进入dataframe的数据结构中
            print(title)
        self.df.to_csv('%s.csv'%self.word)   #保存数据
            
    def get_zhize(self,link):
        try:
            r=requests.get(link,headers=headers,timeout=10)  #请求详情页
        except:
            return "暂无"
        r.encoding='utf-8'   #更改编码
        soup=BeautifulSoup(r.text,'lxml')  #解析数据
        text=soup.select('div.describtion__detail-content')[0].text.strip()   #职责
        return text    
if __name__=="__main__":
    Spider()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值