1. 程式人生 > >scrapy入門

scrapy入門

的區別 t對象 lib 結束 手動 twisted trac art awl

什麽是scrapy?

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

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

異步和非阻塞的區別

異步:調用在發布之後,這個調用就直接返回,不管有無結果
非阻塞:關註的是程序在等待調用結果(消息,返回值)時的狀態,指在不能立刻得到結果之前,該調用不會阻塞當前線程

安裝scrapy

直接安裝可能會報錯

  • 第一步 下載Twisted
    • 點擊 https://www.lfd.uci.edu/~gohlke/pythonlibs/
    • 搜索 Twisted 選擇與你的python版本相對應的版本
    • 查看python版本命令 python -V或著python -version
  • 第二步 安裝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
    • 點擊 https://www.lfd.uci.edu/~gohlke/pythonlibs/
    • 搜索 Twisted 選擇與你的python版本相對應的版本
    • 查看python版本命令 python -V或著python -version
  • 第二步 安裝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地址,不會被再次請求

scrapy入門