设为首页 收藏本站
查看: 419|回复: 0

[经验分享] 让大蛇(Python)帮你找工作

[复制链接]

尚未签到

发表于 2017-5-3 06:30:14 | 显示全部楼层 |阅读模式
  最近有想换工作的想法,于是习惯性的去了XXX网站看有没有合适的职位,输入几个条件后,便开始了对海量的数据进行一页一页的浏览,不知不觉也就走了神........
  作为程序员怎么可以这样找工作了?于是想写个程序来做这个无聊而重复的赛选工作,最近在研究Python,真好又从书上看到了有个叫"网络爬虫"的概念,本来以为这是个复杂的技术,没想到区区几行几代便揭开了这只"爬虫"的面纱,于是针对这个网站试着写一个"爬虫".
  

  经过三天晚上的加班,终于大功告成,运行程序两分钟左右4万多个职位已经全部保存到我本地的文件中.
  目前只是简单的版本,只能根据你输入的条件获取到所有结果中的"职位名称"以及"公司名称",如果想要进行扩展,例如展示出"职位的技能要求,待遇"等可以在已有功能的基础上进行扩展.下面是源码以及思路.(考虑到执行该爬虫可能会对该网站的性能有一定的影响,所以程序中没有给出该网站的真实信息,如果您猜出了该网站的真实信息,也请不要在本博客中公布,否则一切后果自负,谢谢合作 DSC0000.gif )

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)


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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-372236-1-1.html 上篇帖子: python线程池(threadpool)模块使用 下篇帖子: Python 学习入门(32)—— xrange/range
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表