1. 程式人生 > >你是如何開始能寫python爬蟲?

你是如何開始能寫python爬蟲?

好問題,這個問題不禁讓我回憶起我學爬蟲的路。

2014年底,我在學校參與到一個專案,是用資料來預測新店鋪的選址,這裡就不免需要購物中心的資料。當時沒有同學會爬蟲獲取資料,於是有些同學開始手動複製貼上,我並不想做這種機械性的工作。於是,我上網搜到了爬蟲這個概念,在我僅僅會vba和c的情況下,開始自學python,裝library,上網搜教程,各種折騰了一個星期後,終於從網上爬下來需要的資料。

那種痛哭流涕的感覺,這是我爬蟲之路上最刻苦銘心的記憶。

之後,參與到更多的專案中,各個專案都需要爬蟲獲取資料,例如消費者評論的情感分析,需要電商的評論;分析全國各個小區所居住人的社會階層,需要樓價資料;分析各個城市餐廳的消費情況,需要餐廳資料,等等。

慢慢的,我入坑了。首先我只是會使用 requests 獲取網頁,使用 Beautifulsoup 把網頁中的內容提取出來,再使用簡單的一行程式碼存入記事本中。

這些濃縮在我前幾周寫的這篇文章:5分鐘入門網路爬蟲 - 原來可以這麼簡單易懂

5分鐘入門爬蟲,呵呵,這可是我1個月各種搜資料求大神學習的濃縮:學習一個東西一定要一個好老師,你走偏了路,1個月的努力也許別人只需學5分鐘。

慢慢的,發現我使用 requests 獲取到的是亂碼,是該網頁無法顯示的時候,我開始攻克這個難關。我發現了網站也會反爬蟲,我開始網上搜各種資料:修改代理,修改請求頭,修改爬蟲間隔時間等等。

慢慢的,我發現光是用 Beautifulsoup 解析不了某些動態網頁,因為網頁原始碼裡面根本沒有我要的資料。我開始攻克這個難關

,我瞭解到現在大部分網頁使用的 JavaScript 動態提取資料,我開始學會了如何找到網頁的真實地址,我也知道了使用 selenium 模擬瀏覽器的點選。

慢慢的,我發現爬下來的資料越來越大,把資料存入 txt 或者 csv 格式不夠方便,我開始學習資料庫。憑著自己 sql 的一點點基礎,開始自己下載 mysql,學習如何把 Python 和 mysql 對接,把資料存到 sql 資料庫裡。之後又發現 nonsql 對於網頁裡的資料能更方便的儲存,我又開始自學 Mongodb,下載安裝,對接儲存。

慢慢的,我發現之前針對反爬蟲的招數都變成了廢物的時候,我又開始找朋友,問大神,瞭解到動態 IP 這種方法,又知道了 Tor 這個神器。

但是,他們只告訴我有這個方法,我又一點一滴地在網上搜資料,中文的資料很少,我就去 google 上搜英文的,跟著網上的教程,bug 不斷出現,然後又一個個 bug 去解決,我終於知道了 如何使用動態 IP 和Tor,解決了 IP 的問題。

慢慢的,我發現我爬蟲的速度太慢,達不到時間的要求,我開始瞭解到多程序爬蟲,瞭解到分散式爬蟲,我又開始學。。。

前幾天看了李書福的一句話,我覺得很有道理:“造汽車沒什麼神祕的,無非就是四個輪子加一個方向盤再加一個發動機。”,爬蟲對於造個汽車來說,更簡單,無非就是三步:獲取網頁,提取資料,儲存資料。

沒什麼不可能的,你需要的是即刻開始。

也許努力的人會多一點運氣,機械工業出版社的編輯主動找到了我,要我寫一本《Python 網路爬蟲》,我很珍惜這個機會,也希望把自己一路上學到的,遇到的都濃縮到這本書裡。我希望這本書不是成為大家學習爬蟲的障礙,而是享受到爬蟲的樂趣。

幾個月的努力,每天晚上在公司從7點寫到12點,多少個週末沒有出去玩耍,拒絕了朋友的邀約,我終於能出版一本自己的書了。

這本書,我希望零基礎的同學可以讀,有基礎的同學也可以讀;我太知道一個好的老師對於學習的重要了,因此,這本書我儘量做到淺顯易懂,而且通過大量的實戰來讓成果鞏固。

貼個連結,希望大家支援: