爬虫基础-2-爬取招聘信息

小生博客:http://xsboke.blog.51cto.com

                -------谢谢您的参考,如有疑问,欢迎交流

注意:BOSS应该是做了防爬虫的功能,好像是如果频繁访问,就需要输入一下验证码.
为了节省时间,当前只爬取了热门城市的python相关职位信息

代码如下:


from bs4 import BeautifulSoup
import requests,re,sys
sys.setrecursionlimit(10000)

Init_Url = 'https://www.zhipin.com'

Index_Url = 'https://www.zhipin.com/job_detail/?query=python'

h = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'}
r = requests.get(Index_Url,headers=h)
r.encoding = 'utf-8'
content = r.text
soup = BeautifulSoup(content,features='html.parser')

so_tag = soup.find('dd',class_='city-wrapper')

Areas_tag = so_tag.find_all(href=re.compile("^/c"),text=re.compile("[^全国]"))

for Area in Areas_tag:
    HREF = Area['href']
    KA = Area['ka']
    AreaName = Area.text

    NextPage = Init_Url + '/' + HREF
    arg = {'query': 'python','ka':KA}

    def Make(NURL,HEAD,PAR):
        r2 = requests.get(NURL,headers=HEAD,params=PAR)
        r2.encoding = 'utf-8'
        content2 = r2.text
        soup2 = BeautifulSoup(content2,features='html.parser')
        so2 = soup2.find('div',class_='job-list')
        so2_tags = so2.find_all('li')
        for so2_tag in so2_tags:
            List = []
            Job_Type = so2_tag.find('div',class_="info-primary").h3.find('div',class_='job-title').get_text()   # 招聘职位
            Compensation = so2_tag.find('div',class_="info-primary").h3.find('span',class_='red').get_text()    # 薪资
            CompanyAddress = so2_tag.find('div',class_="info-primary").p.get_text("|").split('|')[0]            # 公司地址
            WorkTime = so2_tag.find('div',class_="info-primary").p.get_text("|").split('|')[1]                  # 工作年限
            Education = so2_tag.find('div',class_="info-primary").p.get_text("|").split('|')[2]                 # 学历
            CompanyName = so2_tag.find('div',class_="info-company").find('div',class_='company-text').h3.a.get_text()   # 公司名称

            List.extend([Job_Type,Compensation,CompanyAddress,WorkTime,Education,CompanyName])
            CompanyInfo = so2_tag.find('div',class_="info-company").find('div',class_='company-text').p.get_text("|").split('|')
            if len(CompanyInfo) == 1:
                Trade = so2_tag.find('div', class_="info-company").find('div', class_='company-text').p.get_text("|").split('|')[0]  # 公司行业
                List.append(Trade)
            elif len(CompanyInfo) == 2:
                Trade = so2_tag.find('div', class_="info-company").find('div', class_='company-text').p.get_text("|").split('|')[0]  # 公司行业
                CompanyStage = so2_tag.find('div', class_="info-company").find('div', class_='company-text').p.get_text("|").split('|')[1]  # 公司发展阶段
                List.extend([Trade,CompanyStage])
            elif len(CompanyInfo) == 3:
                Trade = so2_tag.find('div', class_="info-company").find('div', class_='company-text').p.get_text("|").split('|')[0]  # 公司行业
                CompanyStage = so2_tag.find('div', class_="info-company").find('div', class_='company-text').p.get_text("|").split('|')[1]  # 公司发展阶段
                CompanyScale = so2_tag.find('div', class_="info-company").find('div', class_='company-text').p.get_text("|").split('|')[2]  # 公司规模
                List.extend([Trade,CompanyStage,CompanyScale])

            print('\t'.join(List))

        # 判断是否有下一页
        IFNextPage = so2.find('a',ka='page-next')
        if 'disabled' not in IFNextPage['class']:
            NextPage2 = Init_Url + IFNextPage['href']
            arg2 = IFNextPage['ka']
            print(NextPage2)
            Make(NURL=NextPage2, HEAD=h, PAR=arg2)

    Make(NURL=NextPage,HEAD=h,PAR=arg)

输出如下:

python实习生 3k-4k 北京 海淀区 知春路 1年以内 学历不限 中科院计算所 计算机软件 未融资 100-499人
Python后端开发工程师 15k-30k 北京 海淀区 中关村 3-5年 本科 旷视科技 移动互联网 C轮 1000-9999人
高级python研发工程师 20k-35k 北京 朝阳区 高碑店 3-5年 本科 掌阅科技 互联网 已上市 500-999人
高级Python开发工程师 20k-40k 北京 海淀区 五道口 3-5年 本科 iHandy 移动互联网 不需要融资 100-499人
Python开发工程师 12k-15k 北京 海淀区 五道口 1-3年 本科 阿凡题 移动互联网 B轮 100-499人
高级Python研发工程师 30k-50k 北京 朝阳区 望京 5-10年 本科 更美app 互联网 D轮及以上 100-499人
SDK后端python工程师 12k-24k 北京 朝阳区 北苑 1-3年 本科 途游游戏 游戏 B轮 100-499人
Python研发工程师 20k-40k 北京 朝阳区 朝阳路 3-5年 本科 LBE TECH 移动互联网 C轮 100-499人
会运维的python工程师 10k-20k 北京 海淀区 知春路 3-5年 本科 数盟网络 企业服务 B轮 100-499人
Python 20k-40k 北京 海淀区 五道口 1年以内 本科 联袂互动 互联网 100-499人
python开发工程师 10k-15k 北京 海淀区 中关村 1-3年 本科 暗泉信息 信息安全 不需要融资 20-99人
高级python开发 25k-35k 北京 朝阳区 太阳宫 3-5年 本科 老虎集团 互联网 C轮 100-499人
资深Python研发工程师 20k-35k 北京 海淀区 牡丹园 3-5年 本科 国双科技 互联网 已上市 1000-9999人
后端开发工程师(Python) 15k-30k 北京 海淀区 五道口 1-3年 本科 ×××软件研究所 计算机软件 不需要融资 1000-9999人
Python开发工程师 20k-35k 北京 海淀区 清华大学 3-5年 本科 春雨医生 O2O C轮 100-499人
python开发工程师 15k-30k 北京 朝阳区 望京 3-5年 本科 第三石 电子商务 B轮 100-499人
Python开发工程师 15k-25k 北京 海淀区 上地 3-5年 本科 Palmax 移动互联网 A轮 100-499人
高级Python开发工程师 30k-40k 北京 海淀区 马连洼 5-10年 大专 广联达 计算机软件 已上市 1000-9999人
python开发工程师 20k-40k 北京 东城区 东直门 经验不限 本科 客知音 计算机软件 A轮 20-99人
python 实习生 3k-4k 北京 昌平区 天通苑 经验不限 本科 阿姨多多 电子商务 未融资 20-99人
高级爬虫工程师(python/C++) 12k-24k 北京 海淀区 上地 经验不限 大专 永信至诚 信息安全 已上市 1000-9999人
python高级工程师 15k-30k 北京 海淀区 上地 经验不限 学历不限 厦门渊亭 计算机软件 A轮 20-99人
高级python工程师 28k-50k 北京 朝阳区 朝外 经验不限 本科 国美金控 互联网金融 不需要融资 10000人以上
Python全栈开发 25k-35k 北京 海淀区 中关村 经验不限 本科 鸥思邦 人力资源服务 20-99人
python量化交易 15k-20k 北京 朝阳区 朝外 经验不限 学历不限 通证科技 互联网 B轮 20-99人
python开发工程师 15k-25k 北京 朝阳区 建国路 3-5年 本科 景星科技 互联网 未融资 20-99人
python开发工程师 10k-15k 北京 海淀区 牡丹园 3-5年 大专 北京标软 医疗健康 A轮 100-499人
Python开发工程师(算法方向) 23k-45k 北京 大兴区 3-5年 硕士 京东金融 互联网 不需要融资 10000人以上

猜你喜欢

转载自blog.51cto.com/xsboke/2327118