python爬取招聘网站源码及数据分析_Python爬取招聘网站进行数据分析,福利待遇一清二楚,高薪很简单...

本文通过Python爬虫技术获取招聘网站上的数据分析岗位信息,包括地区分布、学历要求、经验需求和薪资水平等。利用Scrapy框架进行数据抓取,解析工作详情,最终将数据保存到CSV文件进行分析。数据清洗和处理后发现,民营企业、50-500人规模的企业以及无工作经验要求的岗位占据主导,主要集中在北上广深等地区,学历要求以本科为主,且工作经验与薪资水平正相关。
摘要由CSDN通过智能技术生成

本次主要围绕数据分析岗位的招聘情况, 进行一个简单的数据分析

环境

win8, python3.7, pycharm, jupyter notebook

关注后私信小编 PDF领取十套电子文档书籍

正文

1. 明确分析目的

了解数据分析岗位的最新招聘情况, 包括地区分布, 学历要求, 经验要求, 薪资水平等.

2. 数据收集

这里借助爬虫, 爬取招聘网站的招聘信息, 进而分析出相关的薪资以及招聘要求.

2.1 目标站点分析

通过对目标站点的分析, 我们需要确定目标站点的请求方式, 以及网页结构.

2.2 新建scrapy项目

1. 在cmd命令行窗口中任意路径下执行以下代码, 比如在"D:pythonTests"目录下新建zhaopin项目.

d:

cd D:pythonTests

scrapy startproject zhaopin

2. 在完成了zhaopin项目创建之后, 接下来就是在zhaopin项目文件夹中新建spider爬虫主程序

cd zhaopin

scrapy genspider zhaopinSpider zhaopin.com

这样就完成项目zhaopin的创建, 开始编写我们的程序吧.

2.3 定义items

在items.py文件中定义需要爬取的招聘信息.

import scrapy

from scrapy.item import Item, Field

class zhaopinItem(Item):

# define the fields for your item here like:

# name = scrapy.Field()

JobTitle = Field() #职位名称

CompanyName = Field() #公司名称

CompanyNature = Field() #公司性质

CompanySize = Field() #公司规模

IndustryField = Field() #所属行业

Salary = Field() #薪水

Workplace = Field() #工作地点

Workyear = Field() #要求工作经验

Education = Field() #要求学历

RecruitNumbers = Field() #招聘人数

ReleaseTime = Field() #发布时间

Language = Field() #要求语言

Specialty = Field() #要求专业

PositionAdvantage = Field() #职位福利

2.4 编写爬虫主程序

在zhaopinSpider.py文件中编写爬虫主程序

import scrapy

from scrapy.selector import Selector

from scrapy.spiders import CrawlSpider

from scrapy.http import Request

from zhaopin.items import zhaopinItem

class ZhaoPinSpider(scrapy.Spider):

name = "ZhaoPinSpider"

allowed_domains = ['zhaopin.com']

start_urls = ['https://xxxx.com/list/2,{0}.html?'.format(str(page)) for page in range(1, 217)]

def parse(self, response):

'''

开始第一页

:param response:

:return:

'''

yield Request(

url = response.url,

callback = self.parse_job_url,

meta={},

dont_filter= True

)

def parse_job_url(self, response):

'''

获取每页的职位详情页url

:param response:

:return:

'''

selector = Selector(response)

urls = selector.xpath('//div[@class="el"]/p/span')

for url in urls:

url = url.xpath('a/@href').extract()[0]

yield Request(

url = url,

callback = self.parse_job_info,

meta = {},

dont_filter = True

)

def parse_job_info(self, response):

'''

解析工作详情页

:param response:

:return:

'''

item = Job51Item()

selector = Selector(response)

JobTitle = selector.xpath('//div[@class="cn"]/h1/text()').extract()[0].strip().replace(' ','').replace(',',';')

CompanyName = selector.xpath('//div[@class="cn"]/p[1]/a[1]/text()').extract()[0].strip().replace(',',';')

CompanyNature = selector.xpath('//div[@class="tCompany_sidebar"]/div/div[2]/p[1]/text()').extract()[0].strip().replace(',',';')

CompanySize = selector.xpath('//div[@class="tCompany_sidebar"]/div/div[2]/p[2]/text()').extract()[0].strip().replace(',',';')

IndustryField = selector.xpath('//div[@class="tCompany_sidebar"]/div/div[2]/p[3]/text()').extract()[0].strip().replace(',',';')

Salary = selector.xpath('//div[@class="cn"]/strong/text()').extract()[0].strip().replace(',',';')

infos = selector.xpath('//div[@class="cn"]/p[2]/text()').extract()

Workplace = infos[0].strip().replace(' ','').replace(',',';')

Workyear = infos[1].strip().replace(' ','').replace(',',';')

if len(infos) == 4:

Education = ''

RecruitNumbers = infos[2].strip().replace(' ', '').replace(',',';')

ReleaseTime = infos[3].strip().replace(' ', '').replace(',',';')

else:

Education = infos[2].strip().replace(' ', '').replace(',',';')

RecruitNumbers = infos[3].strip().replace(' ', '').replace(',',';')

ReleaseTime = infos[4].str

网络爬虫抓取招聘信息数据处理通常包含几个关键步骤: 1. **数据采集**: 使用如Python的`requests`库或`Scrapy`框架来发送HTTP请求,获取网页HTML内容。比如,你可以使用BeautifulSoup或LXML解析器解析HTML,找到包含招聘信息的特定标签。 ```python import requests from bs4 import BeautifulSoup url = "https://www.example.com/jobs" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') jobs = soup.find_all('div', class_='job-list-item') # 假设职位信息在class为'job-list-item'的元素中 ``` 2. **数据清洗**: 清除HTML标签、提取关键字段(如职位名称、公司名、职位描述、薪资等),并可能进行文本预处理,如去除特殊字符、标准化格式。 ```python def clean_data(job_data): title = job_data.find('h2').text # 提取标题 company = job_data.find('span', class_='company-name').text # 提取公司名 ... # 更多字段的提取和清洗 return title, company, ... cleaned_jobs = [clean_data(job) for job in jobs] ``` 3. **存储数据**: 将清洗后的数据存储到本地文件、数据库或数据结构中,比如CSV、JSON、数据库表格等。 ```python import csv with open('jobs.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['职位名称', '公司名', '职位描述', '薪资']) writer.writerows(cleaned_jobs) ``` 4. **异常处理**: 处理网络连接错误、抓取速率限制、网页结构变化等问题,确保爬虫的稳定性和可靠性。 ```python import time from retrying import retry @retry(stop_max_attempt_number=3, wait_fixed=5000) def fetch_data(url): try: response = requests.get(url) if response.status_code == 200: return response.text except Exception as e: print(f"抓取失败: {e}") time.sleep(5) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值