我用Python爬虫找到了Twitter的工作!Python就是牛逼!

我在Twitter做Ads Measurement广告测量相关的工作。这份工作,是用Python爬虫找到的。

故事是这样开始的

那是个马丁路德金假日的晚上,朋友们都出去浪了(咦,怎么听着这么耳熟?),而我正在肾上腺素爆发地趴在电脑前做一件我觉得酷毙了的事。

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

进群:960410445 即可获取数十套PDF!

我12月刚毕业,需要一份工作。但我每天要花大量的时间精力在招聘搜索上,所以我决定加速我的工作搜索流程,毕竟在找工作这件事上,谁快谁就赢了。

从Craigslist开始

我想做一个程序,帮我收集并回复在Craigslist上招软件工程师的人。很多人也许只知道Craigslist能找房子和服务,但他们也许不清楚Craigslist上也能找工作吧!

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

先做一个最简单的原型

首先我要知道如何方便地获得Craigslist的数据。

我查了下Craigslist想看看他们是不是已经有了公开的REST API,但令我失望的是他们没有。

但是,我发现了另一个东西。

Craigslist有一个RSS feed是公开给个人使用的。一个RSS feed就是一个电脑可读的、对网站发出的所有更新的总结。在我的这个例子里,只要有人在Craigslist上挂出招聘帖,我就能通过RSS feed看到。这就是我想要的!

RSS feed就是长这样的:

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

接下来,我需要想个办法来读取这些RSS feeds。我可不想人工去一条一条读这么多RSS feeds,不然这和我直接浏览Craigslist有什么区别呢?

就在这时,我意识到了Google的强大。有一个笑话说的是,软件工程师的大多数时间是花在Google上找答案的......说实话我觉得这太真实了

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

在谷歌了一阵后,我在StackOverflow上发现了一个超有用的帖子,关于怎么来搜索Craigslist RRS feed。它本质就是Craigslist免费提供的一个筛选功能。我只要把我感兴趣的关键词加进特定的参数里就行了。

我当时主要在找西雅图的软件相关的工作,所以只要是关键词里包含“software”的西雅图招聘帖我都能爬到。下面就是我爬取的帖子的链接:

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

我喝过的最美味的汤(Beautiful Soup)

不过到目前为止,我的方法还是漏洞百出。

首先,帖子数量是有限的。我的数据并不包含所有西雅图正在招聘的工作。返回来的结果只是所有招聘帖中的一小部分。我需要知道所有在招聘的帖子。

第二,我意识到RRS feed爬取的结果只有原帖标题,不包括任何联系人信息,除非我手动地去点开帖子。

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

我是一个有很多技能和兴趣的人,但做重复的手动工作并不是我的爱好之一。我完全可以雇人来帮我做,但我当时还是刚刚毕业的穷学生,我不能在这个side project上乱花钱。

这看起来是个死结。不过这并不是结局。

持续迭代

怎么打开这个死结呢?

目前我们已知,Craigslist的RSS feed是可以用关键词来筛选帖子的,且RSS feed每一个帖子都有超链接可以连回原帖。

那,如果我可以找到原帖,也许我可以从帖子上爬取我要的电子邮件?

这意味着我需要找到一个办法来从原始帖子中获取电子邮箱。

又一次,我打开了我最爱的Google,搜索“解析一个网页的办法”。

我找到了一个很酷的Python工具包叫做Beautiful Soup。它妙极了,你可以用来解析网页并且帮你理解一个网页有着怎样的结构。

我的需求很简单:我需要一个方便使用的工具,并能让我们从网页上收集数据。Beautiful Soup可以完美地解决这两个需求。与其花更多的时间选出最好的工具,我决定就选择这个“美味的汤”继续前进了!

用了这个“美味的汤”,我的工作流程就确定了:

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

我现在准备好解决下一个任务了:从原帖中爬取email地址。

开源技术有一个很酷的地方就是,它们是免费的而且用起来很方便!就像在炎热的夏天有人送了你一根免费的冰淇淋。

Beautiful Soup让你可以在一个网页上搜索具体的HTML标签或者记号。Craigslist的网页结构让我很容易就能找到邮件地址,而邮件回复链接前后就是我可以用来提取邮箱信息的HTML标签。

从这一步起,一切就简单了。我靠着Beautiful Soup提供的内置功能,只要稍加简单的操作,我就能方便地从Craigslist的帖子里截取邮件地址。

把所有步骤拼在一起

我花了一个小时左右的时间,做出了我的第一个最简可行产品(MVP)——一个网页爬虫,让我可以收集并回复那些在西雅图100迈半径内寻找软件工程师的人。

我用Python爬虫找到了Twitter的工作!Python就是牛逼!

我在原来的代码上又加了一些附加设备,来让整个流程更方便高效。比如,我把结果保存斤CSV以及HTML网页,以便我更快地解析它们。

当然也有很多不完善的地方,比如:

  • 还无法记录我发过邮件的邮箱
  • 防止给我已经联系过的人过度发邮件
  • Craigslist不允许在他们的平台上使用爬虫,所以我如果跑太频繁,我可能会被禁用
  • 我仍然不能获取Craigslist上的所有帖子

不过最后一条不是太重要,因为如果一个帖子已经存在一段时间,那很有可能这个职位已经找到人了。

整个经历就像一个拼图游戏。我知道我的终极目标,我的挑战是把所有拼图拼到一起来达到这个终极目标。每一片拼图都带我走上了不同的旅程。过程很难,但让人很享受离答案越来越近的每一步。

Takeaways

这次的经历打开了我的眼界,我对Craigslist是如何工作的更加了解了,而且我用了不同的工具合力解决了一个问题,另外,我还有了一个很酷的故事可以和别人分享。

其实这很像当今科技是如何运作的。你找到一个需要解决的大问题,但你看不到任何马上可用的、明显的解决方案。于是你把这个大问题分解成一个一个小问题,然后一一攻破。

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/86664026