让大蛇(Python)帮你找工作

来源:互联网 发布:java web第三方登录 编辑:程序博客网 时间:2024/04/28 22:01

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

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


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

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

import urllib.requestimport rePAGE_NUMBER = 1def filter_job(url):#Python 3.X 必须用 urllib.request打开一个URLtext = 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_NUMBERPAGE_NUMBER = PAGE_NUMBER + 1print("*****************************"+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)

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


原创粉丝点击