招聘网站信息收集
2019-08-05  本文已影响0人 
二纸荒唐言
FindJob
爬取各大招聘公司,将招聘信息保存到本地。
招聘网站
持续更新
传入参数设计
由于这些招聘网站设置的参数不同,统一到本项目中设置两个参数:
city: 招聘地点
keyword: 搜索关键字(如:java、python、平面设计等等)
同时可以选择其中一个网站获取数据,也可以获得所有网站进行数据获取。
项目结构
- core
- boss.pyboss直聘
- 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就行获取相应的信息,获得如下信息
- 职位名称
 - 详细链接
 - 公司名称
 - 工作地点
 - 薪资
 - 发布时间
 - 职位信息
 - 公司信息
 
获取这些字段,使用csv进行存储。
存在问题
- Boss直聘存在反爬,导致IP封禁。可以设置IP代理,
 - 主文件中,多进程没有起作用,搜索之后,没有解决,请了解的小伙伴就行指教。
 
项目地址
FindJob
同时推荐给小伙伴我们团队的爬虫项目地址如下:
ECommerceCrawlers