美文网首页python热爱者
招聘网站信息收集

招聘网站信息收集

作者: 二纸荒唐言 | 来源:发表于2019-08-05 16:29 被阅读0次

    FindJob

    爬取各大招聘公司,将招聘信息保存到本地。

    招聘网站

    持续更新

    传入参数设计

    由于这些招聘网站设置的参数不同,统一到本项目中设置两个参数:

    city: 招聘地点
    keyword: 搜索关键字(如:java、python、平面设计等等)
    

    同时可以选择其中一个网站获取数据,也可以获得所有网站进行数据获取。

    项目结构

    • core
      - boss.py boss直聘
      - QCWY.py 前程无忧
      - zhilian.py 智联招聘
    • save-data 存储数据
    • utils 工具
    • config.py 配置
    • findjob.py 主文件

    代码分析

    前程无忧进行代码分析,定义一个QCWY类,构造函数只要传入关键字、城市名称、线程数。

    URL分析

    通过分析url, 获得相应的信息,这里城市的ID比较难构造,但是通过分析其他文件发现一个JS文件,保存着城市ID和城市之间的关系,通过分析JS文件,将输入的城市名称转换成相应的ID:

        def _get_city_code(self):
            url = 'https://js.51jobcdn.com/in/js/2016/layer/area_array_c.js'
            req = requests.get(url, headers=self.header).text
            a = req.find(self.city)
            return req[a - 9:a - 3]
    
    城市ID

    同时获取搜索的页数,并构造相应URL


    获取最大页数
    def _get_max_page(self):
            city_code = self._get_city_code()
            url = self.baseurl + '{},000000,0000,00,9,99,{},2,1.html'.format(city_code, self.keyword)
            req = requests.get(url=url, headers=self.header)
            req.encoding = 'gbk'
            html = etree.HTML(req.text)
            max_page = html.xpath('//*[@id="resultList"]/div[2]/div[5]/text()')[1][3:]
            for page in range(1, int(max_page) + 1):
                page_url = self.baseurl + '{},000000,0000,00,9,99,{},2,{}.html'.format(city_code, self.keyword, page)
                self.pagequeue.put(page_url)
    

    进行上述获得城市ID,获得最大页码后,进行url构造后进行爬取,通过分析用Xpath就行获取相应的信息,获得如下信息

    1. 职位名称
    2. 详细链接
    3. 公司名称
    4. 工作地点
    5. 薪资
    6. 发布时间
    7. 职位信息
    8. 公司信息

    获取这些字段,使用csv进行存储。

    存在问题

    • Boss直聘存在反爬,导致IP封禁。可以设置IP代理,
    • 主文件中,多进程没有起作用,搜索之后,没有解决,请了解的小伙伴就行指教。

    项目地址

    FindJob
    同时推荐给小伙伴我们团队的爬虫项目地址如下:
    ECommerceCrawlers

    相关文章

      网友评论

        本文标题:招聘网站信息收集

        本文链接:https://www.haomeiwen.com/subject/boumdctx.html