我是如何通過Web爬蟲找工作的

2021-01-09 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免費提供的一種過濾功能。我所要做的就是通過特定的參數對感興趣的關鍵字進行查詢。

我主要在找西雅圖的軟體相關工作。因此,我通過特定的URL來查找西雅圖包含關鍵字"software"的列表。

看,效果很不錯。

西雅圖的RSS feed中標題中包含"software"的內容

遇到的問題

我不認為我的方法能行得通。

首先,列表的數量有限。我的數據未包含西雅圖的所有發布的職位,返回的結果僅是一部分。我希望儘可能擴大搜索,因此我需要獲得所有可用的工作列表。

其次,我意識到RSS feed 不包含任何聯繫方式,這太可惜了。我能找到職位發布信息,但除非我手動過濾這些列表,否則我無法聯繫到這些職位。

Craigslist回復連結的截圖

繼續迭代

經過第一次失敗的嘗試,我發現Craigslist有我可以進行爬取的RSS feed,每個帖子都指向實際發布的連結。

如果我可以訪問實際的帖子,那麼也許我能從中爬到郵箱地址?這意味著我需要找到一種方法來從原始帖子中獲取郵件地址。

再次,我在谷歌上搜索"解析網站的方法"。結果我發現了一個很酷的Python小工具,叫做Beautiful Soup。它能讓你解析整個DOM樹,並幫助你了解網頁的結構。

我的需求很簡單:需要一個易於使用的工具,能讓我從網頁收集數據。

BeautifulSoup符合這兩點,這是我並不是花更多時間去挑選工具,而是選擇了這個工具繼續開始嘗試。

這裡也有類似的工具可供選擇。

BeautifulSoup的主頁

有了這個新工具,我的工作流程就搞定了。

我的工作流程

我準備進行下一個任務:從實際發布貼中爬取郵箱地址。

開源技術的好處在於,它們是免費的,而且性能強大。BeautifulSoup能讓你在網頁上搜索特定的HTML標記。Craigslist以這樣的方式構建其列表,以便輕鬆找到郵箱地址。

之後就簡單了,通過BeautifulSoup提供的內置功能,我就能簡單地從Craigslist帖子獲取郵箱地址。

整合起來

用了約1個小時,我就達到了預期目標。我開發了網絡爬蟲工具,這能夠收集西雅圖100英裡範圍內軟體工程師相關工作的郵箱地址,並回覆郵件。

代碼截圖

我在原始腳本之上添加了些附加組件,讓爬取更為輕鬆。例如,我將結果保存到CSV和HTML頁面中,以便我能快速進行解析。

當然還有一些不足:

無法記錄已發送的郵件無法防止重複發送郵件有些郵件為了防止機器人發送,需要驗證碼才能顯示Craigslist不允許在其平臺上進行爬蟲,如果我經常運行腳本則會被禁止。(我試圖切換VPN,但不管用)仍然無法檢索Craigslist上的所有帖子

最後這點讓人鬱悶,但我認為如果一篇招聘貼發布了一段時間,可能發布者已經沒有再招人了,這樣也是可以接受的。

整個過程感覺像是俄羅斯方塊。我知道最終目標是什麼,真正的挑戰是將正確的部分組合在一起,從而實現最終目標。每一步都有不同的挑戰,整個過程中我學到了很多新知識。

經驗教訓

這次經歷讓我大開眼界,我學到了更多網際網路和Craigslist的工作原理,以及該如何運用各種不同的工具協同解決問題。

可改進的方面

當中有很多方面我能夠進行改進:

我選擇了一種不太熟悉的語言,這需要一個學習過程。不過還挺順利,因為Python非常容易上手。我強烈建議編程初學者將Python作為第一選擇。過分依賴開源技術,開源軟體也存在問題。我使用的一些庫已不再處於活躍開發階段,因此會遇到一些問題。例如無法導入庫,庫會莫名其妙地崩潰等。自己完成一個項目很有趣,但也有壓力,你需要很大的動力才能做出成果。我的這個項目很快很簡單,但我也花了幾周進行改進。隨著項目的進行,我逐漸失去動力,找到工作後,我完全放棄了這個項目。

使用的資源和工具

The Hitchhiker’s Guide to Python一本很棒的學習Python的書。

BeautifulSoup我用來開發網絡爬蟲實用工具

Web Scraping with Python如何使用Python進行Web抓取的使用指南。

Lean Startup我從這本書中學習了如何快速進行原型設計。這裡的很多想法適用於許多不同領域,也有助於我完成項目。

Evernote我用Evernote寫了這篇文章,強烈推薦。

MacBook Pro這是我目前使用的筆記本電腦,與之前的明基相比,它更容易使用,但兩者都適用於一般的編程工作。

相關焦點

  • Web 爬蟲現已合法?
    江湖傳言,網際網路上50%以上的流量都是由爬蟲創造的,很多人都表示:無爬蟲就無網際網路的繁榮。也正因為此,網上各種爬蟲教程風靡不絕,惹各路大神小白觀之參與之。但是,無節制的背後往往隱藏著風險,類似「只因寫了一段爬蟲,公司200多人被抓!」、「程式設計師爬蟲竟構成犯罪?」等報導也時有發生。關於爬蟲合法性的討論,CSDN也在此前的《爬蟲到底違法嗎?這位爬蟲工程師給出了答案》、《不要在爬蟲犯罪的邊緣瘋狂試探!》
  • Python爬蟲學到什麼程度就可以去找工作了?
    有朋友在群裡和大家討論,問的最多的問題就是,python 爬蟲學到什麼程度可以去找工作了,關於這點,和大家分享下我的理解。>4、 一般公司都會有自己的爬蟲系統,而新進員工除了跟著學習以外最常做的工作就是維護爬蟲系統,這點要有了解5、 最後一個加分項就是前端知識,尤其是常用的 js、ajax、html/xhtml、css 等相關技術為最佳,其中 js 代碼的熟悉是很重要的6、 補充一條,隨著手持設備的市場佔比越來越高,app 的數據採集、抓包工具的熟練使用會越來越重要
  • 數據從業者必讀:抓取了一千億個網頁後我才明白,爬蟲一點都不簡單
    自2010年以來抓取超過1000億個產品頁面,我們將會通過系列文章來分享從中學到的經驗教訓,讓你深入了解從電子商務商店中規模析取數據時所面臨的挑戰,並且跟你分享應對這些挑戰的某些最佳實踐。本文是該系列文章的第一篇,在這裡我們將提供規模抓取產品數據所面臨主要挑戰的概覽,以及Scrapinghub從抓取1000億產品頁面中學到的經驗教訓。
  • 手把手教你寫網絡爬蟲:Web應用的漏洞檢測實戰篇!
    關注我,每周分享軟體測試技術乾貨、面試經驗,想要進入軟體測試學習交流群的可以直接私信我哦~~在平時工作當中會用到漏洞掃描工具,用戶只需要輸入待檢測網址,點擊一下按鈕就可以等待網站的安全檢測報告了。作為剛入門的安全小白,對其工作原理產生了濃厚的興趣,逐漸深層剝離Web應用漏洞檢測的本質是網絡爬蟲技術與漏洞檢測技術的結合,網絡爬蟲主要爬取網站結構並收集可能存在的攻擊面,漏洞檢測技術則是在爬蟲結果的基礎上進行針對性的修改並重放,根據伺服器響應進行判斷。在本篇文章中,我們將重點介紹爬蟲技術方面的知識。
  • 開課吧Python:Python爬蟲是什麼?爬蟲工程師薪資怎麼樣?
    為什麼總說爬蟲,找工作容易,工資還高,但是他們是什麼,能做什麼!你知道嗎?繼續往下看吧,我來告訴你答案。Python爬蟲是什麼?Python爬蟲是什麼?Python爬蟲是由Python程序開發的網絡爬蟲(webspider,webrobot),是按照一定規則自動抓取全球資訊網信息的程序或腳本。其實一般是通過程序在網頁上獲取你想要的數據,也就是自動抓取數據。為什麼需要用爬蟲?
  • 網宿科技安全報告 爬蟲肆虐 Web應用攻擊增長翻番
    交通出行受惡意爬蟲攻擊最嚴重當前,爬蟲流量遍布於網際網路各個行業,不管是航空、酒店抑或是政府機構。更可怕的是,爬蟲流量正在以驚人的速度迎頭趕上人類在網際網路上真實的訪問流量 。2018年上半年,網宿安全平臺共監測並攔截了25.86億次有針對性的爬蟲攻擊事件,環比增長約55.79% 。
  • 通付盾Web爬蟲防火牆與中科曙光伺服器成功完成國產化適配
    近日,通付盾最新升級的網絡應用安全防護產品「通付盾爬蟲防火牆軟體」與中科曙光H系列伺服器完成兼容適配聯合測試,適配檢測結果顯示,通付盾爬蟲防火牆軟體在兼容性、可靠性、穩定性及軟體性能等方面均以優異的成績達到適配標準,滿足用戶應用需求。
  • 搜尋引擎爬蟲的工作原理解析
    嚴格來說搜尋引擎是通過一種「爬蟲(蜘蛛)」這樣的電腦程式來抓取我們網頁上面的信息的,總體來講,搜尋引擎爬蟲的工作原理一共分為抓取、過濾、收錄索引、排序四大環節,下面我們一起來看一下。抓取抓取環節是第一步,搜尋引擎收錄你網頁的第一步,它是指搜尋引擎爬蟲通過連結訪問你的網站,進而進行深度和廣度的抓取,深度抓取是指從上至下抓取,廣度抓取則是指從左往右抓取,並且這兩種抓取方式都是同時進行的。通常爬蟲會抓取你網頁上的文字、連結、圖片等等信息,或者從嚴格意義上說,爬蟲其實抓取的是你當前網頁的代碼。
  • 如何快速學會Python爬蟲(入門篇)
    Python爬蟲入門二之爬蟲基礎了解3. Python爬蟲入門三之Urllib庫的基本使用4. Python爬蟲入門四之Urllib庫的高級用法5. Python爬蟲入門五之URLError異常處理6.
  • 基於Django和翻譯API實現web版的中英文對照翻譯(一)
    考慮到篇幅問題,我在這篇文章裡面暫時只會簡單涉及3方面的內容:翻譯API的調用Django Web應用框架的簡單說明web頁面的效果展示事實上,除了使用官方的API,筆者也參照一些網上資料,通過使用Python爬蟲的方式分別抓取了有道翻譯/搜狗翻譯/谷歌翻譯 web版的翻譯內容,以此實現完全免費的翻譯api,筆者的建言是:完全不推薦這樣做。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    python教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 網絡爬蟲作用有哪些?如何構建網絡爬蟲?
    而網絡爬蟲則是數據採集的主要方法。下面具體為大家介紹網絡爬蟲作用有哪些?如何構建網絡爬蟲?什麼是網絡爬蟲?網絡爬蟲是一種網際網路機器人,它通過爬取網際網路上網站的內容來工作。它是用計算機語言編寫的程序或腳本,用於自動從Internet上獲取任何信息或數據。機器人掃描並抓取每個所需頁面上的某些信息,直到處理完所有能正常打開的頁面。
  • 爬蟲腦
    昨晚上,贊同學在做作業,我在書桌對面翻一本書。翻著翻著,忍不住笑出了聲。贊同學好奇,問我看啥好玩的書?
  • Python爬蟲開發的就業前景如何
    首先,在當前的大數據應用環境下,如果單純做Python爬蟲開發,那麼在崗位競爭力上還是有所欠缺的。要想找到一個比較滿意的工作崗位,還需要進一步完善自身的知識結構。隨著Python語言的發展,目前不少程式設計師開始轉向Python開發,在學習Python開發的過程中,一個比較常見的案例就是採用Python開發爬蟲。用Python開發爬蟲是比較方便的,尤其在當前的大數據時代,通過爬蟲來獲取Web數據是一個比較常見的數據採集方式,所以在大數據應用的早期,通過Python開發爬蟲是不少Python程式設計師的重要工作內容之一。
  • 第7天|10天搞定Python網絡爬蟲,Scrapy爬更快
    說了好幾天用requests進行網絡爬蟲編程了,是時候換成專業,高效率的爬蟲庫--Scrapy了。我之所以一開始用requests,就想告訴你,網絡爬蟲,方法挺多的,合適就行。還有在之前說的各種解析庫,在Scrapy中,也會經常用到,特別是Lxml的XPath。如果之前不說,留到現在還得說。
  • 武漢Python Web全棧開發工程師修煉價格_web前端開發培訓哪家好...
    通過該項目,可以讓學員擁有完整的全棧開發體驗(用戶驗證,業務邏輯判斷,查詢,寫入等功能)。在web項目以外的定時任務讓學員對非web項目有一個基本的了解。【課程優勢】 python全棧開發涉及的知識點極多,不同的項目,不同的公司涉及都不相同,本課程主要根據講師在工作中總結的經驗,吸取共同點,著重講解使用率更高的知識點進行教學,並講解當下更主流的前後端框架,如 flask,如 vue Web 全棧開發是很多技能的一個公共點,如爬蟲(通過爬取前端頁面內容或js內容,對於http請求,js是要有所了解的),自動化運維平臺(將人工操作通過
  • 搜尋引擎蜘蛛(爬蟲)工作過程及原理
    什麼是搜尋引擎爬蟲,搜尋引擎爬蟲是如何工作的。搜尋引擎爬蟲也叫做搜尋引擎蜘蛛,是用來抓取網頁信息的,搜尋引擎抓取過程分為大致五個步驟。#Python爬蟲
  • Python爬蟲從入門到精通只需要三個月
    由於此過程中,Python的基本語法,使用該庫,以及如何找到這個文件,你都應該非常熟悉。Python爬蟲技術崗位有哪些方面要求?如果你想知道Python爬蟲學會了多遠才能找到工作,你可以看看目前的市場,企業招聘對Python爬蟲工程師的一般要求,總結出五點左右。
  • 用Python進行Web爬取數據
    那麼,如何應對數據匱乏的問題呢?實現此目的最有效,最簡單的方法之一就是通過網頁抓取。我個人發現網絡抓取是一種非常有用的技術,可以從多個網站收集數據。如今,某些網站還為你可能希望使用的許多不同類型的數據提供API,例如Tweets或LinkedIn帖子。但是有時你可能需要從不提供特定API的網站收集數據。這就是web抓取能力派上用場的地方。
  • python為什麼叫爬蟲?為啥那麼多人通過python兼職都能掙不少錢?
    再例如:我關注的找工作的網站會不定期的發布招聘信息,我不信每天都花費自己的精力去點擊網站查看信息,但是我又想在有新的通知時,能夠及時知道信息並看到這個信息。那這個自動化程序,就是爬蟲啦。開發爬蟲的準備工作程式語言:PythonIDE的話,推薦使用Pycharm。