你们都是来看这个图的吧

整整两个月之前,由于项目需要,我需要学习一下爬虫技术。我看了很多文章,也不知道哪个工具好,哪个工具受欢迎,学了哪个工具以后会有利于找工作。我想了半天,突然想到了,何不直接上51job去看呢,于是,我查了15job上面北上广深杭工资在15000以上的345个岗位,一个一个的打开所有的页面,才找到了我想要的答案。具体看下文。
http://blog.csdn.net/juwikuang/article/details/66472279
当时觉得自己好傻呀,一个学IT的,居然还这样手动去查。可是我当时不会爬虫技术呀。这又是一个先有鸡还是先有蛋的问题。。。

这两个月里,理由业余时间,我也陆陆续续研究了一下爬虫技术。一开始,我想装Nutch。可是装了半天也没装起来,真的沮丧。于是,我掉头去学Scrapy。Scrapy是python,跟我的对python的了解,安装python包,基本上就是conda install,pip install就搞定了,比java简单多了。果然,上了Scrapy官网

https://scrapy.org/

一看,安装Scrapy,就一句话。

$pip install scrapy

不过,我后来遇到点问题,Python找不到scarpy。我想,我是不是搞错了,我用的是Anaconda,于是,我把命令改成了

$conda install scarpy

这下Anaconda和Spyder可以找到Scarpy了。好吧,计算机的世界真是很神奇。Happy和Unhappy,就在一念间。一念成仙,一念成魔。

这之后,忙了几天,把要爬的网站给爬了。爬下了很多数据,有了数据后面就有很多故事了。。。

昨天,我又想起当时傻乎乎的打开一张张网页,觉得这样不行,现在已经熟悉Scrapy了,应该写个脚本爬51job,让脚本告诉我哪个爬虫工具热门。昨天,写了一个晚上,终于搞定了。终于还愿了。

代码如下。

#this is to search for jobs and do statistics
#created by Eric Chow 2017/5/25
import scrapy
from scrapy import Spider
from scrapy import signals
import re #regular expression
import csvclass SpyderJobSpider(Spider):name = "SpyderJob"start_urls = ['http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC%2B%E4%B8%8A%E6%B5%B7%2B%E5%B9%BF%E5%B7%9E%2B%E6%B7%B1%E5%9C%B3&kw=%E7%88%AC%E8%99%AB&sm=0&p=1']#keywords related with spider developer skillskeywords = ["SCRAPY", "NUTCH", "LUCENE", "HERITRIX", "SOLR", "SPHINX", "WEGMAGIC","PYSPIDER", "LARBIN", "HTMLPARSER", "CRAWL4J", "WEBCOLLECTOR", "JSOUP", "ELASTIC SEARCH", "HTTPCLIENT", "HTMLUNIT", "WEBDRIVER", "SELENIUM"]counts = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]@classmethoddef from_crawler(cls, crawler, *args, **kwargs):spider = super(SpyderJobSpider, cls).from_crawler(crawler, *args, **kwargs)crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed)return spiderdef spider_closed(self, spider, reason):csvfile = file('results.csv', 'wb')writer = csv.writer(csvfile)writer.writerow(['skill', 'count'])data = []for i in range(0,len(self.keywords)):data.append((self.keywords[i], self.counts[i]))writer.writerows(data)csvfile.close()def parse(self, response):#navigate to next pagenext_page = response.css(".next-page::attr(href)").extract_first()if next_page!=None:yield scrapy.Request(next_page, self.parse)#find all links            links = response.css("a::attr(href)").extract()#a valid url looks like that#http://jobs.zhaopin.com/416425134250016.htmfor link in links:m = re.search('http://jobs.zhaopin.com/(\d+).htm', link)if m == None:continueyield scrapy.Request(link, self.detail_parse)def detail_parse(self, response):contents = response.css(".tab-inner-cont")lines_unicode = contents[0].css("::text").extract()lines = [line.encode("utf-8") for line in lines_unicode]article="".join(lines)article = article.upper()for i in range(0,len(self.keywords)):if self.keywords[i] in article:self.counts[i] = self.counts[i]+1

等等,说好的51job呢?怎么变成智联招聘(zhaopin.com)了?

说来又是一把泪呀。用scrapy爬出来的51job页面,是手机版的。而手机版有个特点,就是下拉加载。我用的是爬虫呀,我怎么让爬虫下拉加载呢?于是查了几个方案,想让51job返回电脑版,51job就是不配合。得,此路不通。

自然的,第二选择就是zhaopin.com。下图是zhaopin.com的职位列表,我的关键字是爬虫,地点选了北上广深。

首先,要解决分页的问题。我在脚本里,不断地去找当前页面的下一页,并把下一页交给parse函数。这样,每页都会爬到了。

接着,再去研究职位介绍页面。

这页面中间的职位描述,用了很多换行,所以其实我抓到的是很多unicode字符串。unicode字符串列表,是不用直接Join起来的,还要先转成str类,才能join。感谢Google,这一步步,很快就找到对应代码了。

眼看胜利就在眼前,却在阴沟翻船。我要的是一个最终统计结果,所以,只有爬虫爬完了,我才能得到我的数据。我凭经验,觉得Spider类应该有个close事件。那么我的输入,应该放在close事件里。我在官网,找到了对应的代码。于是,我在close事件里写了

#大概就是这个意思
yield {"Scrapy":count_scrapy}

结果输出文件里是空的。难道官网在骗我么?这年头怎么官网也不可靠了。我的心情都跌倒了谷底。于是,我又去Google上查了个底朝天。不断地改改改。改的我要绝望了。

突然,我开窍了。会不会爬虫关闭了以后,就不再写文件了呢?于是,我把yield改成了print,终于成功了。看看时间,已经1点了。

看看现在的时间,也到了23点了,我要去洗洗睡了。今天能睡个好觉。

以后,找工作就容易了,可以自己写个爬虫,按照自己的需要,去爬自己想要的工作,不需要把所有的页面打开看了。不知道身边有没有人找工作,我去写个爬虫。等有朋友需要的时候,我再去研究一下,到时候再分享。

差点忘了,爬虫结果。这次的结果,scrapy才是第一,nutch第二。这让我这个选择了scrapy的人很欣慰。

爬虫工具在就业市场的受欢迎程度相关推荐

  1. 美国人工智能就业市场全景:开放职位512个,基本工资最高26万美元

    人工智能已经开始对劳动力市场形成全方位影响,许多研究都在对此进行说明.但很少有人关注与人工智能有关的招聘趋势--那些研发出改变劳动力市场的AI技术的工作者,以及雇佣他们的雇主. 人工智能已经开始对劳动 ...

  2. 美国AI就业市场全景:开放职位512个,基本工资最高26万美元

    开放职位512个,基本工资最高26万美元--美国人工智能就业市场全景一览 编者按:人工智能已经开始对劳动力市场形成全方位影响,许多研究都在对此进行说明.但很少有人关注与人工智能有关的招聘趋势--那些研 ...

  3. 如何高效学Python?好用的爬虫工具又有哪些?

    作为当下最火的编程语言,Python 的受欢迎程度不用我多说.学好 Python ,不仅可以进阶资深 Python 工程师,去大厂,还能转型数据分析.人工智能等行业. 但与此同时,我也经常在后台看到一 ...

  4. 排名前20的网页爬虫工具,超多干货

    网络爬虫在许多领域都有广泛的应用,它的目标是从网站获取新的数据,并加以存储以方便访问.而网络爬虫工具越来越为人们所熟知,因为它能简化并自动化整个爬虫过程,使每个人都可以轻松访问网络数据资源. 1. O ...

  5. 爬虫工具和服务——Python之外的选择

    转载自公众号:FightingCoder 在之前介绍过很多爬虫库的使用,其中大多数也是 Python 相关的,当然这些库很多都是给开发者来用的.但这对一个对爬虫没有什么开发经验的小白来说,还是有一定的 ...

  6. 管道软件_软件管道工的就业市场过热

    管道软件 这是对Karl L. Hughes 在2018年发表的"软件工程大批作品 " 的回应. 因此,我们在这里生活,这个世界上大多数"软件工程"基本上都是管 ...

  7. 当个运营都难,二本生在如今的就业市场真的没出路了吗?

    一入社会深似海. 很多之前在象牙塔里放肆自由的学子刚进社会的时候都会被狠狠地打击到.根据数据现实,只有1~2%的人能考上985,211大学,剩下99%的人大多都是在社会的反复磨擦下变得逐渐成熟,逐渐适 ...

  8. 介绍一些比较方便好用的爬虫工具和服务

    在之前介绍过很多爬虫库的使用,其中大多数也是 Python 相关的,当然这些库很多都是给开发者来用的.但这对一个对爬虫没有什么开发经验的小白来说,还是有一定的上手难度的.现在市面上其实也出现了非常多的 ...

  9. Le wagon编程训练营2021数据科学就业市场最全分析

    在就业市场上,数据科学和机器学习的机会每年都在增加.如果你是数据科学相关岗位的求职者之一,那么恭喜你了!未来十年将会是一个利于数据科学的明朗时代,企业对于数据科学岗位的需求预计将大幅度增长. 近日,L ...

最新文章

  1. java struts2 漏洞复现合集
  2. ipad编程软件python-iPad可用的软件编程软件有吗?
  3. 按钮滑动隐藏,停止滑动显示的动画
  4. Winform中使用MQTTnet实现MQTT的服务端和客户端之间的通信以及将订阅的消息保存到文件
  5. python网络通信的几种方式_python网络-计算机网络基础(23)
  6. Android布局中的空格以及占一个汉字宽度的空格的实现
  7. shell变一些小技巧
  8. 静态页面之间的转发与json与ajax做到动态数据
  9. Python:常用模块简介(1)
  10. ds18b20c语言显示小数位,DS18B20多点测温(读序列,匹配序列,51单片机C程序,1602显示)...
  11. Oracle Assets Additions API--Sample Script(Invoices)
  12. 关于delphi指针(转)
  13. cakephp 学习1
  14. 跑赢业务的同时如何实现技术成长? | 凌云时刻
  15. 奇虎360历届笔试面试题汇总
  16. 数据仓库实践-拉链表设计
  17. 建模是什么,建模定义,及学习方法
  18. Intel vPro
  19. 数控技能大赛计算机程序设计员,第八届全国数控技能大赛决赛获奖名单
  20. OpenCV4.3 Java 编程入门:离散傅里叶变换

热门文章

  1. cobbler集成服务器批量安装操作系统(无人值守)
  2. vscode 用户设置与工作区设置
  3. 计算机一级考试可以搜索吗,手动找回Windows7搜索功能
  4. Python异步并发机制详解,让你的代码运行效率就像搭上了火箭!!!
  5. 指数衰减学习率的staircase
  6. OCV (on-chip-variation)
  7. ZigBee TI ZStack CC2530 4.1 三种网络设备类型
  8. 微信公众号接入微软小冰
  9. 问题:阿里云RDS数据库Binlog日志一直增大,撑爆磁盘
  10. excel流程图分叉 合并_快速制作组织架构图,层次结构图,流程图等,只需学会这个功能...