让大蛇(Python)帮你找工作

最近有想换工作的想法,于是习惯性的去了XXX网站看有没有合适的职位,输入几个条件后,便开始了对海量的数据进行一页一页的浏览,不知不觉也就走了神........

作为程序员怎么可以这样找工作了?于是想写个程序来做这个无聊而重复的赛选工作,最近在研究Python,真好又从书上看到了有个叫"网络爬虫"的概念,本来以为这是个复杂的技术,没想到区区几行几代便揭开了这只"爬虫"的面纱,于是针对这个网站试着写一个"爬虫".


经过三天晚上的加班,终于大功告成,运行程序两分钟左右4万多个职位已经全部保存到我本地的文件中.

目前只是简单的版本,只能根据你输入的条件获取到所有结果中的"职位名称"以及"公司名称",如果想要进行扩展,例如展示出"职位的技能要求,待遇"等可以在已有功能的基础上进行扩展.下面是源码以及思路.(考虑到执行该爬虫可能会对该网站的性能有一定的影响,所以程序中没有给出该网站的真实信息,如果您猜出了该网站的真实信息,也请不要在本博客中公布,否则一切后果自负,谢谢合作微笑)

import urllib.request
import re

PAGE_NUMBER = 1

def filter_job(url):
	#Python 3.X 必须用 urllib.request打开一个URL
	text = urllib.request.urlopen(url).read().decode("gbk")
	page_navi(text)

def page_navi(page_source):
	#第一页直接获取信息
	extract_job_info(page_source)
	#"下一页"链接的正则
	next_page_regular = r'</td><td><a href=(.*?)class="orange1".+?style=.*?>(.*?)<img .*?pageron.gif.*? />.*?</a></td></tr>'
	next_pagelink_set = re.findall(next_page_regular, page_source)
	if len(next_pagelink_set) > 0:
		#如果需要更改全局变量,则需要先用global来声明
		global PAGE_NUMBER
		PAGE_NUMBER = PAGE_NUMBER + 1
		print("*****************************"+str(PAGE_NUMBER)+"******************************")
		next_url = next_pagelink_set[0][0].split('"')[1]
		#解析出"下一页"按钮对应的链接,然后递归调用
		filter_51job(next_url)	

def extract_job_info(page_source):
	#职位名称的正则
	job_name_reqular = r'<a .*? class="jobname" .*>(.*?)</a>'
	#公司名称的正则
	com_name_reqular = r'<a .*? class="coname" .*>(.*?)</a>'
	job_name_set = re.findall(job_name_reqular, page_source)
	com_name_set = re.findall(com_name_reqular, page_source)
	#使用zip()对结果进行展示
	for job_name, com_name in zip(job_name_set, com_name_set):
		print("Job Name:" + job_name + " "*5 + "  Company Name:" + com_name)
	

if __name__ == "__main__":
	#输入一定条件后,结构列表的首页URL,只要输入这个作为条件
	url = '''http://XXXXX.XXXXXXX.com/list/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'''
	filter_job(url)


以上代码只是列出的基本的信息,如果有什么好的建议,或者是改进的地方,欢迎指出


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值