1. 程式人生 > >從零開始的Python爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

從零開始的Python爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

引言

用最短的時間寫一個最簡單的爬蟲,可以抓一些簡單的論壇、帖子、網頁。

入門

1.準備工作

  • 安裝Python
  • 安裝scrapy框架
  • 一個IDE或者可以用自帶的

2.開始寫爬蟲

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

在spiders資料夾中建立一個python檔案,比如miao.py,來作為爬蟲的指令碼。

程式碼如下:

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

3.執行一下

如果用命令列的話就這樣:

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

解析

1.試試神奇的xpath

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

2.看看xpath的效果

在最上面加上引用:

from scrapy import Selector

把parse函式改成:

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

我們再次執行一下,你就可以看到輸出“壇星際區”第一頁所有帖子的標題和url了。

遞迴

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

完整的程式碼如下:

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

Pipelines——管道

現在是對已抓取、解析後的內容的處理,我們可以通過管道寫入本地檔案、資料庫。

1.定義一個Item

在miao資料夾中建立一個items.py檔案

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

這裡我們定義了兩個簡單的class用來描述我們爬取的結果。

2. 處理方法

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

3.在爬蟲中呼叫這個處理方法。

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

4.在配置檔案裡指定這個pipeline

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

可以這樣配置多個pipeline:

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

Middleware——中介軟體

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

1.Middleware的配置

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

2.破網站查UA, 我要換UA

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

這裡就是一個簡單的隨機更換UA的中介軟體,agents的內容可以自行擴充。

3.破網站封IP,我要用代理

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

從零開始的 Python 爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

 

結束

看懂了嗎 ?是不是超簡單!