前段時間我媽突然問我:兒子,爬蟲是什么?我當(dāng)時既驚訝又尷尬,驚訝的是為什么我媽會對爬蟲好奇?尷尬的是我該怎么給她解釋呢?
一、爬蟲介紹
1.爬蟲是什么
網(wǎng)絡(luò)爬蟲(web crawler 簡稱爬蟲)就是按照一定規(guī)則從互聯(lián)網(wǎng)上抓取信息的程序,既然是程序那和正常用戶訪問頁面有何區(qū)別?爬蟲與用戶正常訪問信息的區(qū)別就在于:用戶是緩慢、少量的獲取信息,而爬蟲是大量的獲取信息。
這里還需要注意的是:爬蟲并不是Python語言的專利,JAVA、Js、C、php、Shell、Ruby等等語言都可以實(shí)現(xiàn),那為什么Python爬蟲會這么火?我覺得相比其他語言做爬蟲Python可能就是各種庫完善點(diǎn)、上手簡單大家都在用,社區(qū)自然活躍,而社區(qū)活躍促成Python爬蟲慢慢變成熟,成熟又促使更多用戶來使用,如此良性循環(huán),所以Python爬蟲相比其他語言的爬蟲才更火。
下面是一段hello world級別的Python爬蟲,它等效于你在百度搜索關(guān)鍵字:python。
2.爬蟲案例
既然爬蟲是大量抓取網(wǎng)頁,那是不是爬蟲都是不好的呢?答案當(dāng)然不是,可以說我們的日常上網(wǎng)已經(jīng)離不開爬蟲了,為什么這么說?下面我就為大家盤點(diǎn)幾個爬蟲日常應(yīng)用:
- 搜索引擎:如google、百度、雅虎、搜狗、必應(yīng)等等很多搜索引擎其本質(zhì)就是一個(可能多個)巨大爬蟲,這些搜索引擎工作原理是:頁面收錄->頁面分析->頁面排序->響應(yīng)關(guān)鍵字查詢,也就是說它會先把互聯(lián)網(wǎng)上很多頁面保存到服務(wù)器,然后分析網(wǎng)頁內(nèi)容建立關(guān)鍵字索引,最后用戶輸入關(guān)鍵字的時候去查詢內(nèi)容,然后根據(jù)相關(guān)性排序(百度害人的競價排名毫無相關(guān)性可言),第一步的頁面收錄就是爬蟲,百度查看一個網(wǎng)站有多少網(wǎng)頁被收錄方法,百度輸入:site:你想查詢的網(wǎng)站,如:site:blog.csdn.net。
- 搶票軟件:很多人在吐槽12306卡,可你不知道12306幾乎每天都相當(dāng)于淘寶雙11的流量,這誰受得了。為什么每天都是如此高的流量?答案自然是爬蟲了,為什么搶票軟件可以搶票?因為它在不斷的刷新和監(jiān)控是否有余票,大大小小這么多搶票App,訪問量之高可想而知。之前很多公司都出過搶票插件,如:百度、360、金山、搜狗等等,后來都被鐵道部約談下線了,而現(xiàn)在又流行搶票app,為什么搶票app可以,插件就不可以?可能是因為管理和可控性的原因。
- 惠惠購物助手:這是一款能進(jìn)行多個網(wǎng)站比價并能知道最低價的一個網(wǎng)站,其工作原理也是通過大量爬蟲爬取商品價格然后存儲,這樣就可以制作一個價格走勢圖,幫助你了解商品最低價。
二、爬蟲的價值
從上面舉的幾個例子來看,爬蟲對整個互聯(lián)網(wǎng)的價值真的無法估量,那對于小我而言,爬蟲能給我們帶來哪些價值?
1.隱形的翅膀
如果你問我學(xué)完P(guān)ython基礎(chǔ)之后該學(xué)習(xí)什么技能?我會毫不猶疑的說爬蟲,為什么是爬蟲?
- 爬蟲相對其他技能簡單易學(xué),且效果立即可見,會有一定的成就感
- 爬蟲可以說是其他技能的基石,因為他是數(shù)據(jù)的來源,現(xiàn)在這個時代誰有數(shù)據(jù)誰才能稱王,所以會爬蟲絕對會讓你如虎添翼
- 在國內(nèi),很多企業(yè)巴不得你啥都會,所以在應(yīng)聘時,爬蟲會是一個不錯的加分項
2.看不見的商戰(zhàn)
職場對話:
老板:小明給你個重要任務(wù)。
小明:就算996我也在所不辭(第一次接到老板的直接需求)!
老板:你能不能搞到競爭對手的商品價格?
小明:沒問題(牛逼先吹出去),小事!
老板:這可不是小事,只要你能持續(xù)獲取競品價格,我們就可以標(biāo)價低于他們一點(diǎn)點(diǎn),持續(xù)如此大家就知道我們的價格肯定是比他們低,這樣大家就直接來我們這里購買商品了,到時候慶功宴上你就是最大功臣(先畫個餅)。
小明:老板牛逼,老板英明!
3.會爬蟲就可以創(chuàng)業(yè)
工作之后很多同學(xué)會利用上班空余時間,來做自己的東西或者項目,別看開始是一個小打小鬧的東西,慢慢豐富將來也許會成為一款成熟的產(chǎn)品。
而爬蟲可以讓你很輕松的實(shí)現(xiàn)自己的產(chǎn)品,做的好的話就可以創(chuàng)業(yè)。這里豬哥給大家列幾個簡單的創(chuàng)業(yè)項目,當(dāng)然作為一個思維引導(dǎo)。
如果你想做一款好的產(chǎn)品,你需要從用戶需求出發(fā)去思考,做解決目前存在的問題的產(chǎn)品或者目前還沒有的服務(wù),也許你的產(chǎn)品就是下一個頭條。
三、盜亦有道
爬蟲既然如此強(qiáng)大而優(yōu)秀,那是不是會了爬蟲就可以為所欲為?
延伸話題:其實(shí)我內(nèi)心一直有一個疑問:為什么互聯(lián)網(wǎng)公司都偏愛用動植物來命名或作為logo?如:螞蟻金服、天貓、菜鳥、金東狗、騰訊企鵝,百度的熊掌、搜狗、途牛、美團(tuán)的袋鼠。。。真的是太多了,難道僅僅是因為好記?我認(rèn)為好記是一個原因,其根本原因是受到編程行業(yè)的影響,你想想編程行業(yè)有多少動植物:Java(咖啡)、Python(蟒蛇)、Go(囊地鼠)、PHP(大象)、linux(企鵝)、Perl(駱駝)、MySQL(海豚)等等,具體為什么編程行業(yè)喜歡用動植物這豬哥就不清楚,還請明白的同學(xué)留言告知大家!
講上面的延伸話題想表達(dá)的是,大自然世間萬物,相生相克,衡而不禍!而爬蟲也是如此,下面就為大家介紹一下約束爬蟲的幾個點(diǎn)。
1.robots協(xié)議
做過網(wǎng)站的同學(xué)也許知道,我們在建站的時候需要在網(wǎng)站根目錄下放一個文件:robots.txt,這個文件是干什么用的呢?
Robots協(xié)議,也稱為爬蟲協(xié)議、機(jī)器人協(xié)議等,其全稱為“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)(Robots Exclusion Protocol)”。網(wǎng)站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。
每個網(wǎng)站的根目錄下都必須放置robots.txt文件,否則搜索引擎將不收錄網(wǎng)站任何網(wǎng)頁。
下面我們以百度為例子,來看看百度的robots.txt文件:
我們在百度robots協(xié)議的最下面,有這樣一條:
User-agent: * Disallow: /
這表示除上面那些定義過的爬蟲以外其他爬蟲都不允許爬取百度任何東西!
2.法律
我們都知道在發(fā)起請求時User-agent是可以自定義的,也就是說我們可以繞過robots協(xié)議和以User-agent來定義的反爬蟲技術(shù),所以robots協(xié)議可能更像一個君子協(xié)議,那咱們國家有沒有法律明文規(guī)定呢?我們來了解一下非法侵入計算機(jī)信息系統(tǒng)罪:
第二百八十五條 非法侵入計算機(jī)信息系統(tǒng)罪:違反國家規(guī)定,侵入前款規(guī)定以外的計算機(jī)信息系統(tǒng)或者采用其他技術(shù)手段,獲取該計算機(jī)信息系統(tǒng)中存儲、處理或者傳輸?shù)臄?shù)據(jù),或者對該計算機(jī)信息系統(tǒng)實(shí)施非法控制,情節(jié)嚴(yán)重的,處三年以下有期徒刑或者拘役,并處或者單處罰金;情節(jié)特別嚴(yán)重的,處三年以上七年以下有期徒刑,并處罰金。
我們可以看到重點(diǎn)信息:入侵計算機(jī)獲取數(shù)據(jù)是違法的,也就是說爬蟲技術(shù)本身是無罪的,因為它是獲取的公開信息,并未非法入侵計算機(jī)。但是如果你用爬取到的數(shù)據(jù)去從事商業(yè)化操作,那也許就構(gòu)成了違法犯罪行為!
給大家介紹下因爬蟲而被判刑的案件:
- 頭條爬蟲官司:https://dwz.cn/qBBHc2fq
- 酷米客公司官司:https://dwz.cn/9IpAOHGB
- 360和百度爬蟲官司:https://dwz.cn/RGRa3HJc
我發(fā)現(xiàn)這幾起案件的通性有兩點(diǎn):1、公司性質(zhì)。2、競爭對手。3、讓人家找到線索。
最后提醒大家:技術(shù)人,要守住自己的底線,違反國家法律法規(guī)的事情咱們堅決不能做!
3.反爬蟲工程師
本來想采訪一位攜程反爬蟲工程師,但是他說由于工作保密原因不便接受采訪,所以只好尊重他的選擇!
四、爬蟲現(xiàn)狀
之前豬哥說過互聯(lián)網(wǎng)中有超過50%的流量來自爬蟲,那我們就來簡單聊聊目前爬蟲的現(xiàn)狀吧!
1.技術(shù)
反爬蟲幾乎和爬蟲同時誕生,它們是相愛相殺的連個技術(shù),如果沒有爬蟲就沒有反扒,而反扒技術(shù)又反過來又可以促進(jìn)爬蟲技術(shù)的發(fā)展。
- 交互問題:各種變態(tài)的驗證碼充斥,尤其是12306,分分鐘都想爆粗口,以后會越來越變態(tài)。。。
- js加密:最近很流行的一種反扒技術(shù),會爬蟲還得先學(xué)js,然后反爬蟲工程師在js里面各種投毒,殺人誅心。。。
- IP限制:限制單個ip某段時間內(nèi)訪問次數(shù)
豬哥只介紹了一個反扒技術(shù),當(dāng)然都有現(xiàn)成的技術(shù)解決,但是作為爬蟲員最重的并不是會使用工具或框架去應(yīng)對反扒,而是能通過自己的思考和摸索破解反扒,因為反扒技術(shù)更新快且多樣化。
2.就業(yè)
就業(yè)的話主要從招聘、薪資、就業(yè)形勢三個方面分析,我從網(wǎng)上查閱了一些資料,然后整理以圖片形式提供給大家參考。
數(shù)據(jù)來源:職友集:https://dwz.cn/6PeU46QY
3.前景
現(xiàn)在很多人并不看好爬蟲的前景,只搞爬蟲的話技術(shù)只停留在當(dāng)前水平,不再學(xué)習(xí)新知識,不再進(jìn)步的話,那么是沒有前途的,總有一天會被時代淘汰,其實(shí)其他職位也只如此。
每個職業(yè)都是有一個橫向和縱向的發(fā)展,也就是所謂的廣度和深度的意思。第一、如果專研得夠深,你的爬蟲功能很強(qiáng)大,性能很高,擴(kuò)展性很好等等,那么還是很有前途的。第二、爬蟲作為數(shù)據(jù)的來源,后面還有很多方向可以發(fā)展,比如可以往大數(shù)據(jù)分析、數(shù)據(jù)展示、機(jī)器學(xué)習(xí)等方面發(fā)展,前途不可限量,現(xiàn)在作為大數(shù)據(jù)時代,你占據(jù)在數(shù)據(jù)的的入口,還怕找不到發(fā)展方向?所以爬蟲也許只是一個起點(diǎn)一個跳板,是你走向人生巔峰的一個基石,總有一天你會迎娶白富美!
五、總結(jié)
本期為大家講解什么是爬蟲、爬蟲的價值、爬蟲的合法性以及爬蟲的現(xiàn)狀