一、為什麼會有這一節
相信很多人,在學習一門技術時,首先想到的是難不難,自己能不能學會,那麼今天我就告訴你,爬蟲很難建議你趁早放棄(開個玩笑)。其實很簡單,簡單到1個小時你就可以寫一個爬蟲,分分鐘就可以搞到你日思夜想的女神的照片,hhh
爬蟲你可以玩得很簡單,你也可以玩得很二次元哦。例如曾經有人問我,是否可以幫他擷取一下他QQ清單裡所有人的曆史空間動态(咱也不知道他為啥想擷取别人的空間,咱也不敢問),你可能需要個兩三天來寫代碼、調試等等,而二刺猿大佬可能分分鐘就可以搞定;再比如你需要用爬蟲的方式爬取1000萬+條的資料,你用簡單的爬蟲方式爬取可能需要好幾天時間,但如果你是一個二刺猿,你就可以采用分布式爬蟲技術1天就可以搞定1000萬+條資料的采集。雖然都是爬蟲,但這就是菜鳥與大牛的差別哦!

二、涉及到的知識點
這個各位看官可以參考一下上一篇分享的爬蟲學習路線圖,這裡籠統的列一下哦
網頁知識
html、js、css、xpath,接觸過的看官可能覺得很簡單,那你就别看喽,我這是寫給沒接觸過的人的,雖然簡單但卻是必不可少哦,需要提前去了解一下,去學習一下,至少你得知道這些個網頁都是怎麼構成的吧,這樣你才可以去搞破壞啊,不然就是“天狗吃太陽,沒法子下口”。
HTTP知識
HTTP(HyperText Transfer Protocol 超文本傳輸協定)是網際網路上應用最為廣泛的一種網絡協定,它是由網際網路協會(World Wide Web Consortium)制定釋出。
正規表達式
工欲善其事必先利其器,正則就像是我們手中的劍,有了它我們就可以才能更好的去分割網頁資訊,擷取我們想要的資料。
一些重要的爬蟲庫
url,url2
beautiul Soup
… …
資料庫
你擷取到資料得存起來,不能像“狗熊掰棒子,掰一個,扔一個”啊,這時候就需要用到資料庫了,當然你也可以選擇檔案存儲(後面的當我沒說),我平時爬蟲用到的資料庫有MySQL,有更适合爬蟲的MongoDB,還有分布式會用到的Redis等
爬蟲架構
PySpider
Scrapy
selenium
… …
反爬蟲
爬蟲和反爬蟲從來都是相愛相殺,如果沒有爬蟲就沒有反扒,而反扒技術又反過來促進了爬蟲技術的發展。
常見問題:
互動式問題:各種變态的驗證碼,尤其點名一下12306… …,不信你可以去試試,分分鐘能惡心死你,放心以後會更惡心的,hhh
JS加密問題:這可是很流行的一種反扒技術,會爬蟲你還得先學js,不然你就得不到資料哦,還可能自己中毒身亡… …,因為反爬蟲的工程師會在js裡面各種花式投毒,可謂是殺人誅心… …
IP限制問題:一個ip(人)某段時間(一天)内通路次數(上廁所次數),你可以這麼了解,正常情況下,人一天上廁所大概5—8次,可要是你一天上了100次廁所,那你對象就覺得你呀不是人,把你給咔嚓了。
分布式爬蟲
這就要使用多個redis執行個體來緩存各台主機上爬取來的資料
還是那一句:
希望大家可以去發現我的錯誤、提出自己的想法,互相幫助,共同進步