前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我是如何通过Web爬虫找工作的

我是如何通过Web爬虫找工作的

作者头像
CDA数据分析师
发布2018-10-25 10:29:29
9210
发布2018-10-25 10:29:29
举报
文章被收录于专栏:CDA数据分析师CDA数据分析师

作者: Zhia Hwa Chong

编译: Mika 本文为 CDA 数据分析师原创作品,转载需授权

前言

当时我刚从大学毕业,需要找一份工作。那时我不太喜欢社交,因此我决定以我所知道的最佳方法来找工作,即开发一个应用程序,这篇文章就介绍了我是如何做到的。

Craigslist

我打算通过开发应用程序,帮我在Craigslist在找寻软件工程师的相关工作。

Craigslist是美国著名的大型免费分类广告网站,你可以在上面找到东西出售,服务信息,社区帖子等内容。

Craigslist

那时我还从未开发过成熟的应用程序。我在大学里做的学术项目主要是:构建和解析二叉树,计算机图形和简单的语言处理模型等等。

换句话说,我是妥妥的小白。

Python是当下非常热门的新兴编程语言,我不太会Python,但我打算试着学一学。因此,我打算结合这两者,用Python开发一个小型的应用程序。

我是怎么做的

大学毕业后,我哥哥送了我一台明基笔记本电脑,我就用这台电脑进行开发。

这台电脑并不具备最好的开发环境,我用的是Python 2.4和Sublime的旧版本,但从零开始开发应用的过程确实令人振奋。

我不知道我需要做些什么,我在不断地尝试,看会遇到哪些问题。我的第一个挑战就是如何轻松访问Craigslist的数据。

首先,我查看Craigslist是否有公开的REST API,但令我沮丧的是,并没有。但我找到了不错的替代品。

Craigslist有公开供个人使用的RSS feed。RSS feed是网站发送更新的计算机可读摘要。RSS feed能让我获取发布的工作列表,这非常适合我的需求。

RSS feed大概是这样

接下来,我需要阅读这些RSS feed。我不想手动浏览RSS feed,这很耗时,与一页页浏览Craigslist没有什么不同。

这时我开始意识到谷歌的作用。有一个说法是,软件工程师的大部分时间都用在谷歌搜索上,我认为这是有一定道理的。

经过谷歌搜索后,我在StackOverflow上找到了这篇有用的帖子,上面描述了如何搜索Craiglist 的RSS feed,这是Craigslist免费提供的一种过滤功能。我所要做的就是通过特定的参数对感兴趣的关键字进行查询。

相关帖子:

https://stackoverflow.com/questions/10353021/is-there-a-developers-api-for-craigslist-org

我主要在找西雅图的软件相关工作。因此,我通过特定的URL来查找西雅图包含关键字"software"的列表。

https://seattle.craigslist.org/search/sss?format=rss&query=software

看,效果很不错。

西雅图的RSS feed中标题中包含"software"的内容

遇到的问题

我不认为我的方法能行得通。

首先,列表的数量有限。我的数据未包含西雅图的所有发布的职位,返回的结果仅是一部分。我希望尽可能扩大搜索,因此我需要获得所有可用的工作列表。

其次,我意识到RSS feed 不包含任何联系方式,这太可惜了。我能找到职位发布信息,但除非我手动过滤这些列表,否则我无法联系到这些职位。

Craigslist回复链接的截图

继续迭代

经过第一次失败的尝试,我发现Craigslist有我可以进行爬取的RSS feed,每个帖子都指向实际发布的链接。

如果我可以访问实际的帖子,那么也许我能从中爬到邮箱地址?这意味着我需要找到一种方法来从原始帖子中获取邮件地址。

再次,我在谷歌上搜索"解析网站的方法"。结果我发现了一个很酷的Python小工具,叫做Beautiful Soup。它能让你解析整个DOM树,并帮助你了解网页的结构。

我的需求很简单:需要一个易于使用的工具,能让我从网页收集数据。

BeautifulSoup符合这两点,这是我并不是花更多时间去挑选工具,而是选择了这个工具继续开始尝试。

这里也有类似的工具可供选择。

https://www.quora.com/What-are-some-good-Python-libraries-for-parsing-HTML-other-than-Beautiful-Soup

BeautifulSoup的主页

有了这个新工具,我的工作流程就搞定了。

我的工作流程

我准备进行下一个任务:从实际发布贴中爬取邮箱地址。

开源技术的好处在于,它们是免费的,而且性能强大。BeautifulSoup能让你在网页上搜索特定的HTML标记。Craigslist以这样的方式构建其列表,以便轻松找到邮箱地址。

之后就简单了,通过BeautifulSoup提供的内置功能,我就能简单地从Craigslist帖子获取邮箱地址。

整合起来

用了约1个小时,我就达到了预期目标。我开发了网络爬虫工具,这能够收集西雅图100英里范围内软件工程师相关工作的邮箱地址,并回复邮件。

代码截图

我在原始脚本之上添加了些附加组件,让爬取更为轻松。例如,我将结果保存到CSV和HTML页面中,以便我能快速进行解析。

当然还有一些不足:

  • 无法记录已发送的邮件
  • 无法防止重复发送邮件
  • 有些邮件为了防止机器人发送,需要验证码才能显示
  • Craigslist不允许在其平台上进行爬虫,如果我经常运行脚本则会被禁止。(我试图切换V**,但不管用)
  • 仍然无法检索Craigslist上的所有帖子

最后这点让人郁闷,但我认为如果一篇招聘贴发布了一段时间,可能发布者已经没有再招人了,这样也是可以接受的。

整个过程感觉像是俄罗斯方块。我知道最终目标是什么,真正的挑战是将正确的部分组合在一起,从而实现最终目标。每一步都有不同的挑战,整个过程中我学到了很多新知识。

经验教训

这次经历让我大开眼界,我学到了更多互联网和Craigslist的工作原理,以及该如何运用各种不同的工具协同解决问题。

可改进的方面

当中有很多方面我能够进行改进:

  • 我选择了一种不太熟悉的语言,这需要一个学习过程。不过还挺顺利,因为Python非常容易上手。我强烈建议编程初学者将Python作为第一选择。
  • 过分依赖开源技术,开源软件也存在问题。我使用的一些库已不再处于活跃开发阶段,因此会遇到一些问题。例如无法导入库,库会莫名其妙地崩溃等。
  • 自己完成一个项目很有趣,但也有压力,你需要很大的动力才能做出成果。我的这个项目很快很简单,但我也花了几周进行改进。随着项目的进行,我逐渐失去动力,找到工作后,我完全放弃了这个项目。

使用的资源和工具

  • The Hitchhiker’s Guide to Python

一本很棒的学习Python的书。

  • BeautifulSoup

我用来开发网络爬虫实用工具

https://www.crummy.com/software/BeautifulSoup/

  • Web Scraping with Python

如何使用Python进行Web抓取的使用指南。

  • Lean Startup

我从这本书中学习了如何快速进行原型设计。这里的很多想法适用于许多不同领域,也有助于我完成项目。

  • Evernote 

我用Evernote写了这篇文章,强烈推荐。

  • MacBook Pro

这是我目前使用的笔记本电脑,与之前的明基相比,它更容易使用,但两者都适用于一般的编程工作。

原文链接:

https://medium.freecodecamp.org/how-i-built-a-web-crawler-to-automate-my-job-search-f825fb5af718

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档