scrapy入門

文藝的男青年發表於2018-12-13

什麼是scrapy?

scrapy是一個為了爬去網站資料,提取結構性資料而編寫的應用框架,我們只需要實現少量的程式碼,就能夠快速的抓取

scrapy使用了 Twisted 非同步網路框架,可以加快我們的下載速度

非同步和非阻塞的區別

非同步:呼叫在釋出之後,這個呼叫就直接返回,不管有無結果
非阻塞:關注的是程式在等待呼叫結果(訊息,返回值)時的狀態,指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒

安裝scrapy

直接安裝可能會報錯

  • 第一步 下載Twisted
  • 第二步 安裝Twisted
    • 進入到剛剛下載的Twisted所在的目錄,執行 pip install Twisted‑18.9.0‑cp36‑cp36m‑win_amd64.whl(剛剛下載的檔案)
  • 第三部 安裝scrapy
    • pip install scrapy

scrapy專案流程

  • 建立專案
    • scrapy startproject 專案名
    • 如:scrapy startproject Myspider
  • 建立爬蟲
    • cd 專案名
    • 如:cd Myspider
    • scrapy genspider <爬蟲名字> <限制訪問的網站(allowed_domains)>
    • 如:scrapy genspider itcast itcast.cn
  • 啟動爬蟲
    • scrapy crawl 爬蟲名
    • 如:scrapy crawl itcast
  • 完善spider
  • 完善管道

完善spider

  • parse方法必須有,用來處理start_urls對應的響應
  • extract() response.xpath()從中提取資料的方法,沒有就返回一個空列表

資料提取url地址補全

  • 1.手動字串相加
  • 2.urllib.parse.urljoin(baseurl.url)
    • 後面的url會根據baseurl進行url地址的拼接
  • 3.response.follow(url, callback)
    • 能夠根據response的地址把url拼接完整,構造成request物件

scrapy構造請求

  • scrapy.Request(url, callback, meta, dont_filter=False)
    • callback:url地址的響應的處理函式
    • meta:實現在不同的解析函式中傳遞資料
    • dont_filter:預設是Faslse表示過濾,scrapy請求過的url地址,在當前的執行程式中

      —恢復內容結束—

      ### 什麼是scrapy?
      scrapy是一個為了爬去網站資料,提取結構性資料而編寫的應用框架,我們只需要實現少量的程式碼,就能夠快速的抓取

scrapy使用了 Twisted 非同步網路框架,可以加快我們的下載速度

非同步和非阻塞的區別

非同步:呼叫在釋出之後,這個呼叫就直接返回,不管有無結果
非阻塞:關注的是程式在等待呼叫結果(訊息,返回值)時的狀態,指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒

安裝scrapy

直接安裝可能會報錯

  • 第一步 下載Twisted
  • 第二步 安裝Twisted
    • 進入到剛剛下載的Twisted所在的目錄,執行 pip install Twisted‑18.9.0‑cp36‑cp36m‑win_amd64.whl(剛剛下載的檔案)
  • 第三部 安裝scrapy
    • pip install scrapy

scrapy專案流程

  • 建立專案
    • scrapy startproject 專案名
    • 如:scrapy startproject Myspider
  • 建立爬蟲
    • cd 專案名
    • 如:cd Myspider
    • scrapy genspider <爬蟲名字> <限制訪問的網站(allowed_domains)>
    • 如:scrapy genspider itcast itcast.cn
  • 啟動爬蟲
    • scrapy crawl 爬蟲名
    • 如:scrapy crawl itcast
  • 完善spider
  • 完善管道

完善spider

  • parse方法必須有,用來處理start_urls對應的響應
  • extract() response.xpath()從中提取資料的方法,沒有就返回一個空列表

資料提取url地址補全

  • 1.手動字串相加
  • 2.urllib.parse.urljoin(baseurl.url)
    • 後面的url會根據baseurl進行url地址的拼接
  • 3.response.follow(url, callback)
    • 能夠根據response的地址把url拼接完整,構造成request物件

scrapy構造請求

  • scrapy.Request(url, callback, meta, dont_filter=False)
    • callback:url地址的響應的處理函式
    • meta:實現在不同的解析函式中傳遞資料
    • dont_filter:預設是Faslse表示過濾,表示請求過的url地址,不會被再次請求

相關文章