每天一點爬蟲(一)
開始爬蟲之旅。
認識爬蟲
網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,spider),是一種按照一定的規則,自動地抓取互聯網信息的程序或者腳本。通俗的講就是通過程序自動去獲取web頁面上自己想要的數據。
主要就是模擬瀏覽器打開網頁,獲取網頁中我們想要的那部分數據。
簡單的說一下瀏覽器打開網頁的過程:在瀏覽器中輸入地址後,經過DNS服務器找到服務器主機,向服務器發送一個請求,服務器經過解析後發送給用戶瀏覽器結果,包括html,js,css等文件內容,瀏覽器解析出來最後呈現給用戶,最後就是用戶看到的瀏覽器顯示部分了。用戶看到的瀏覽器的結果就是由HTML代碼構成的,我們爬蟲就是為了獲取這些內容,通過分析和過濾html代碼,從中獲取我們想要資源。
爬蟲的基本流程主要分為4步:
第一步、發起請求:通過HTTP庫向目標站點發起請求,也就是發送一個Request,請求可以包含額外的header等信息,等待服務器響應。
第二步、獲取響應內容:如果服務器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,類型可能是HTML,Json字符串,二進制數據(圖片或者視頻)等類型。
第三步、解析內容:得到的內容可能是HTML,可以用正則表達式,頁面解析庫進行解析,可能是Json,可以直接轉換為Json對象解析,可能是二進制數據,可以做保存或者進一步的處理。
第四步、保存數據:保存形式多樣,可以存為文本,也可以保存到數據庫,或者保存特定格式的文件。
在發送請求階段,請求方式主要有GET/POST兩種類型,還有一些其他方式但是不常用。
請求頭包含User-Agent,Host,Cookies等信息,請求體是攜帶的數據,如提交表單數據時候的表單數據。
服務器端會根據請求信息給出相應的響應,包括狀態碼,響應頭和響應體,響應體裏面就是我們請求的資源內容。
從理論上來說,我們請求到什麽資源就等於爬取什麽樣的資源,但是由於很多網站中的數據都是通過js,ajax動態加載的,所以直接通過get請求獲取的頁面和瀏覽器顯示的不同。後面的隨著學習的深入我們會有方法解決js渲染等問題。
解析爬下來的數據的方式:
- 直接處理;
- Json解析;
- 正則表達式處理;
- BeautifulSoup解析處理;
- PyQuery解析處理;
- XPath解析處理。
存儲數據的方式:
- 文本:純文本,Json,Xml等;
- 關系型數據庫:如mysql,oracle,sql server等結構化數據庫;
- 非關系型數據庫:MongoDB,Redis等key-value形式存儲。
了解了爬蟲是什麽,接下來我們就開始爬蟲之旅了。
每天一點爬蟲(一)