让大蛇(Python)帮你找工作

xiaoxiao2021-03-01  17

最近有想换工作的想法,于是习惯性的去了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) 以上代码只是列出的基本的信息,如果有什么好的建议,或者是改进的地方,欢迎指出

转载请注明原文地址: https://www.6miu.com/read-3650302.html

最新回复(0)