呼萬喚始出來,喜大普奔,恰逢整理技能樹,Python爬蟲也在其中,隻是優先級較靠後。
時不待我,隻争朝夕,趁着活動先把它肝了,整篇Python爬蟲入門的學習總結,希望對有意學習Python爬蟲卻不知道從何入手的朋友有所裨益。内容較多,建議點贊收藏,閑暇時再細細品味。
0x1、侃侃而談
1. 與Python的"一簾幽夢"
接觸Python幾年有矣,不過一直都處于初窺門徑的階段,主業Android開發,Python隻是興趣使然,偶爾寫寫自動化腳本,簡化工作,偶爾幫人寫下爬蟲,撈點小錢,僅此而已。
除了夠用外,筆者沒往下深刨Python的原因:
- 要恰飯 → 沒有環境支援,導緻沒大的Python項目經驗,跳槽得從0開始,盡管Android現在好像不怎麼景氣,還很卷,但是那個年限在那裡,混口飯吃還是可以的;
- 時間精力有限 → 一旦做出學習某塊知識的選擇,就付出了暫時無法學習其他知識的機會成本。既然下一份工作還是Android,肯定是優先鞏固Android相關的,會Python是加分,但加不了多少分。
前年機緣巧合出了本Python爬蟲入門的實體書,有幸被清華大學大資料研究院選做教材「嘿嘿」, 聽說還往他們合作的高校推薦,不知道挂了我學位證的母校有沒有位列其中呢?哈哈!
爾後對Python的學習毫無建樹,書出版後,陸續收到讀者和老師的回報,讓我意識到實體書存在的兩個問題:
- 時效性:IT更新日新月異,内容和例子都是速朽的,更新隻能重新出版,走流程時間太長;
- 趣味性:書面化限制較多,不能白話文 + 表情包,沒我部落格的文章有趣;
腦子一熱,開始在公号上更Python教程,對書本内容的更新、補充及擴充,堅持了一段時間。後面沒啥空閑時間,認真寫的文章沒得到較好的回報,對自己技術的提升也沒幫助,就太監了。
(懷念當初實習在南方軟體園幹Android教程幹到晚上十一二點,無憂無慮的日子真好啊~)
很慶幸在老東家摸魚的時候遇見Python,學習Python,愛上Python,她 文法簡單容易上手、代碼優雅功能強大、類庫豐富社群活躍,任誰看都不禁心猿意馬啊!人生苦短,我用Python,這就是我和Python的一簾幽夢。
2、明哲保身避免 "牢獄之災"
偶爾有大資料公司被端,無良流量自媒體為博眼球,誇大事實,一句 爬蟲玩得好,牢飯吃得早,把想學爬蟲萌新吓得瑟瑟發抖,生怕因為自己寫的爬蟲被拷進去,嘤嘤嘤,害怕,我:
說實話,以大部分萌新的技術能力着有些實想太多,這種妄下定論的方式跟 吃完蝦再吃維生素C會砒霜中毒 理論一樣,脫離劑量談毒性——都是耍流氓。
從技術中立角度而言,爬蟲技術本身并無違法違規之處,爬什麼,怎麼爬才是導緻锒铛入獄的罪魁禍首。Github上有個庫記錄了國内爬蟲開發者涉訴與違規相關的新聞、資料與法律法規: github.com/HiddenStraw…
節省讀者時間,直接歸納下:
① 無視robots協定,爬不給爬的資料
robots.txt,純文字檔案,網站管理者可在此檔案中聲明不想被搜尋引擎通路的部分,或指定搜尋引擎隻收錄的指定内容,文法簡單:
- 通配符(*) → 比對0個或多個任意字元;
- 比對符($) → 比對URL結尾的字元;
- User-agent → 搜尋引擎爬蟲的名字,各大搜尋引擎都有固定的名字,如百度Baisuspider,如果該項為*(通配符) 表示協定對任何搜尋引擎爬蟲均有效;
- Disallow → 禁止通路的路徑;
- Allow → 允許通路的路徑;
以掘金的robots.txt為例:
不過這個協定可以說是 君子協定,防君子不防小人,無視Robots協定随意抓取網站内容,将 涉嫌 構成對《反不正當競争法》的第二條的違反,即違反誠實信用原則和商業道德的不正當競争行為。
② 強行突破網站設定的技術措施
網站一般都會做下反爬,以減少爬蟲批量通路對網站帶來的巨大壓力和負擔。爬蟲開發者通過技術手段繞過反爬,客觀影響了網站的正常運作(甚至搞挂了),适用《反不正當競争法》第十二條(四) 其他妨礙、破壞其他經營者合法提供的網絡産品或者服務正常運作的行為。
而強行突破某些特定被爬放的技術措施,還可能構成刑事犯罪行為:
《刑法》第二百八十五條:違反規定侵入國家事務、國防建設、尖端科學技術領域的計算機資訊系統的,不論情節嚴重與否,構成非法侵入計算機資訊系統罪。 《刑法》第二百八十六條還規定,違反國家規定,對計算機資訊系統功能進行删除、修改、增加、幹擾,造成計算機資訊系統不能正常運作,後果嚴重的,構成犯罪,處五年以下有期徒刑或者拘役;後果特别嚴重的,處五年以上有期徒刑。 違反國家規定,對計算機資訊系統中存儲、處理或者傳輸的資料和應用程式進行删除、修改、增加的操作,後果嚴重的,也構成犯罪,依照前款的規定處罰。
這裡還要警惕一點:為違法違規組織提供爬蟲相關服務,間接的也可能要負刑事責任,案例裡的極驗破解者被抓就是模闆,盡管技術本身無罪,但是你開發出來了,被犯罪分子利用了,一樣有責任。( 這也是我之前寫的一篇《如何用Python投機倒把幾天“暴富”》 不提供投注腳本的原因~)
③ 爬取特定類型的資訊
一、使用者的個人隐私
抓取使用者隐私資訊,或在抓取後公開傳播,對使用者造成損壞後果的,可能侵犯了使用者的隐私權。
二、使用者的個人資訊
《民法總則》第111條:任何組織和個人需要擷取他人個人資訊的,應當依法取得并確定資訊安全。不得非法收集、使用、加工、傳輸他人個人資訊。 《網絡安全法》第四十四條:任何個人群組織不得竊取或者以其他非法方式擷取個人資訊。 《刑法》修正案(九)第二百五十三條:違反國家有關規定,向他人出售或者提供公民個人資訊,情節嚴重的,構成犯罪;在未經使用者許可的情況下,非法擷取使用者的個人資訊,情節嚴重的也将構成“侵犯公民個人資訊罪”。
三、著作權法保護的作品
就網頁 通路行為 而言,爬蟲本身進是對人類通路行為的模拟,爬蟲通路人工能通路的資訊,不構成侵權。繞過限制通路特定使用者才能解除的資訊,爬蟲通路行為就有可能涉嫌破壞技術措施的違法或者侵權行為。 就資料 儲存行為 而言,抓取行為的本質上是對資訊的複制,此行為有可能侵犯著作權人的複制權,大陸對臨時複制的行為持寬容态度。 就資料 提取和使用行為 而言,如果爬蟲控制者在自己的網站上公開傳播抓取的資訊,則可能進一步侵犯資訊網絡傳播權。
四、商業秘密
《反不正當競争法》第九條:以不正當手段擷取他人商業秘密的行為即已經構成侵犯商業秘密。而後續如果進一步利用,或者公開該等資訊,則構成對他人商業秘密的披露和使用,同樣構成對權利人的商業秘密的侵犯。
五、反不正當競争保護的資料
未經許可抓取、使用網站中資料的行為,損害了網站的競争優勢,進而構成不正當競争。這裡的資料可能是由使用者生成的,無版權,但是作為網站的主要競争力來源。如抓取大衆點評、知乎等UGC模式網站上使用者釋出的資訊,在自己的産品或服務中釋出、使用該資訊,則有較大風險構成不正當競争。
案例還是建議各位看一看,擔心自己寫的爬蟲違法,可以對号入座看一看,總結下爬的基本操守:
先确定爬啥網站:國家事務,國防建設、尖端科學技術領域的不要碰; 确定什麼内容:個人隐私、個人資訊、商業秘密不要碰;著作權法保護、不正當競争保護的資料,自己偷着樂,不傳播和用作盈利還好 (如資料分析參考下~)。 爬取手段:溫柔點,盡量别影響正常使用者的使用,細水長流,把别人網站搞挂了,不搞你才怪。 robots協定:em...我是小人
天網恢恢,疏而不漏~
好吧,侃這一Part就到這裡,講了:自己接觸Python的曆程 + 爬蟲違法的範疇解讀,相信可以打消一部分想學Python爬蟲的小白萌新心中的顧慮。
下篇文章給大家展示一下入門的Python爬蟲秀
Python基礎+爬蟲基礎入門筆記