Python和Beautifulsoup爬虫的应用-前程无忧

目标

爬取前程无忧北上广深各国际学校招聘信息,统计一线城市国际学校员工(老师,非老师)薪酬水平。可用数据实际不够准确,数量很少,这里只是提供一套demo进行一遍操作。原始数据如下:
原始数据

环境搭配

  • Useful Packages
    1. requests,与服务器建立连接
    2. beautifulsoup, 抓取网页信息
    3. xlwt,可将所爬取数据存入Excel
    4. pandas, numpy 数据清理
    5. plotnine python里调用R语言的可视化包ggplot
  • Anaconda - Jupyter Notebook

难点

这里不想过多说怎么具体爬取页面,网上有很多类似例子并不难,最后页我也附录了爬虫代码。主要讲一下爬取这类招聘网站所遇到的难点。

学校名称匹配

  • 其实只是单一的爬取数据并不复杂,网上有很多共享代码。那么问题来了!第一,如果规定好了几所国际学校,所爬取数据应该只包含这几所国际学校;第二;由于招聘网站上录入学校名称并不一定完全和真正的名称一致,从而导致错失了一部分数据,例如‘深圳益田国际学校’有可能在招聘网站上显示为‘深圳益田国际部‘,但其实两者一样。 程序并不会帮你自动区分其中区别。

薪酬单位

  • 薪酬不统一。原始数据中,薪酬被分为(万/月,万/年,千/月,元/天)。

解决方案

学校名称匹配

  • 利用正则表达也就是 regular expression 检索每一条所爬数据,如果符合条件则爬下来并储存,否则就跳过检索下一条。举个例子,前程无忧上某一条要爬数据显示学校名称为‘深圳益田国际部’ 我们可以通过建立一个字典dictionary 储存关键字‘益田’和‘国际’,从而省略检索最后一个‘部’使其同时可匹配学校两字。唯一不足是字典需要手动判断并输入关键字。代码如下:
# 交大可匹配:交大剑桥或者交大国际
d_guangzhou = {
   
			   '英国': '学校', '华南师范': '国际',
               '交大': '剑桥|国际', '第二外国语': '国际'
              }

for key, value in d_shenzhen.items():
	regexp_key = re.compile(r'{}'.format(key))   # 匹配第一个词
    regexp_value = re.compile(r'{}'.format(value)) # 匹配第二个词
	if regexp_key.search(company) and regexp_value.search(company): # 如果两个字同时存在于所检索的company中
		# Extact the data 

薪酬单位

  • 同样还是利用正则表达。匹配‘万千元’以及‘月年天’,统一薪酬单位为每月收入多少万。代码如下:
# 创建新的dataframe"薪水_万每月"

job["薪水_万每月"] = '' 

for i in range(len(job["薪水"])):
    
    str 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值