1. 程式人生 > >scrapy框架 - 入門使用(一)

scrapy框架 - 入門使用(一)

目標

  1. 掌握如何建立專案
  2. 掌握如何建立爬蟲
  3. 熟悉建立專案後每個檔案的作用
  4. 掌握pipeline的使用
  5. 掌握scrapy中logging的使用

1 scrapy專案實現流程

  • 建立一個scrapy專案:scrapy startproject mySpider

  • 生成一個爬蟲:scrapy genspider itcast "itcast.cn

  • 提取資料:完善spider,使用xpath等方法

  • 儲存資料:pipeline中儲存資料

2 建立scrapy專案

下面以抓取傳智師資庫來學習scrapy的入門使用:

http://www.itcast.cn/channel/teacher.shtml

命令:scrapy startproject +<專案名字>

示例:scrapy startproject myspider

生成的目錄和檔案結果如下:

3 建立爬蟲

命令:scrapy genspider +<爬蟲名字> + <允許爬取的域名>

示例:scrapy genspider itcast itcast.cn

生成的目錄和檔案結果如下:

4 完善spider

完善spider即通過方法進行資料的提取等操作

注意:

  1. response.xpath方法的返回結果是一個類似list的型別,其中包含的是selector物件,操作和列表一樣,但是有一些額外的方法
  2. extract() 返回一個包含有字串的列表
  3. extract_first() 返回列表中的第一個字串,列表為空沒有返回None
  4. spider中的parse方法必須有
  5. 需要抓取的url地址必須屬於allowed_domains,但是start_urls中的url地址沒有這個限制
  6. 啟動爬蟲的時候注意啟動的位置,是在專案路徑下啟動

5 資料傳遞到pipeline

為什麼要使用yield?

  • 讓整個函式變成一個生成器,有什麼好處呢?
  • 遍歷這個函式的返回值的時候,挨個把資料讀到記憶體,不會造成記憶體的瞬間佔用過高
  • python3中的range和python2中的xrange同理

注意:

  • yield能夠傳遞的物件只能是:BaseItem,Request,dict,None

6 完善pipeline

完善pipeline程式碼後,需要在setting中設定重啟

pipeline在settings中能夠開啟多個,為什麼需要開啟多個?

  • 不同的pipeline可以處理不同爬蟲的資料
  • 不同的pipeline能夠進行不同的資料處理的操作,比如一個進行資料清洗,一個進行資料的儲存

pipeline使用注意點

  • 使用之前需要在settings中開啟
  • pipeline在setting中鍵表示位置(即pipeline在專案中的位置可以自定義),值表示距離引擎的遠近,越近資料會越先經過
  • 有多個pipeline的時候,process_item的方法必須return item,否則後一個pipeline取到的資料為None值
  • pipeline中process_item的方法必須有,否則item沒有辦法接受和處理
  • process_item方法接受item和spider,其中spider表示當前傳遞item過來的spider

7 輸出日誌LOG的設定

為了讓我們自己希望輸出到終端的內容能容易看一些,我們可以在setting中設定log級別

在setting中新增一行(全部大寫):LOG_LEVEL = "WARNING”

預設終端顯示的是debug級別的log資訊