1. 程式人生 > >scrapy-安裝環境

scrapy-安裝環境

scrapy-安裝環境

  1. 站點

    Scrapy框架官方網址

    Scrapy中文維護站點

  2. 安裝

     pip install Scrapy
    

    安裝後,只要在命令終端輸入 scrapy可以檢驗是否安裝成功。

    windows安裝錯誤:

    [Scrapy安裝錯誤:](MicrosoftVisualC++14.0isrequired…
    https://blog.csdn.net/nima1994/article/details/74931621)

    下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

1.命令

  1. 建立專案

        scrapy startproject myproject
    

    專案目錄結構:
    下面來簡單介紹一下各個主要檔案的作用:

    • scrapy.cfg :專案的配置檔案

    • mySpider/ :專案的Python模組,將會從這裡引用程式碼

    • mySpider/items.py :專案的目標檔案

    • mySpider/pipelines.py :專案的管道檔案

    • mySpider/settings.py :專案的設定檔案

    • mySpider/spiders/ :儲存爬蟲程式碼目錄

  2. 建立一個新的spider

        scrapy genspider mydomain mydomain.com
    

    要建立一個Spider, 你必須用scrapy.Spider類建立一個子類,並確定了三個強制的屬性 和 一個方法。

    1. name = “” :這個爬蟲的識別名稱,必須是唯一的,在不同的爬蟲必須定義不同的名字。

    2. allow_domains = [] 是搜尋的域名範圍,也就是爬蟲的約束區域,規定爬蟲只爬取這個域名下的網頁,不存在的URL會被忽略。

    3. start_urls = () :爬取的URL元祖/列表。爬蟲從這裡開始抓取資料,所以,第一次下載的資料將會從這些urls開始。其他子URL將會從這些起始URL中繼承性生成。

    4. parse(self, response) :解析的方法,每個初始URL完成下載後將被呼叫,呼叫的時候傳入從每一個URL傳回的Response物件來作為唯一引數,主要作用如下:

      負責解析返回的網頁資料(response.body),提取結構化資料(生成item)
      生成需要下一頁的URL請求。

  3. 檢視所有爬蟲

        scrapy list
    

    執行爬蟲

        scrapy crawl <spider>
    

    執行爬蟲,並把結果儲存到指定檔案

        scrapy crawl runoob  -o taobo.json
    

    利用命令列,抓取指定URL的程式碼

        scrapy fetch https://s.taobao.com/list?q=iphone
    

    備註的部分

  4. DEMO

    1. 構建item模型
      開啟mySpider目錄下的items.py

      Item 定義結構化資料欄位,用來儲存爬取到的資料,有點像Python中的dict,但是提供了一些額外的保護減少錯誤。

      可以通過建立一個 scrapy.Item 類, 並且定義型別為 scrapy.Field的類屬性來定義一個Item(可以理解成類似於ORM的對映關係)。

      接下來,建立一個ItcastItem 類,和構建item模型(model)。

       import scrapy
       from scrapy.item import Item, Field
       
       class MyteachspiderItem(scrapy.Item):
           # define the fields for your item here like:
           # name = scrapy.Field()
           pass
       
       class Website(Item):
       
           title = Field()
           link = Field()
           desc = Field()
      
    2. 新建爬蟲

       scrapy genspider runoob runoob.com
      
    3. 定義爬蟲

       # -*- coding: utf-8 -*-
       import scrapy
       
       from myTeachSpider.items import Website
       class RunoobSpider(scrapy.Spider):
           name = "runoob"
           allowed_domains = ["runoob.com"]
           start_urls = [
               "http://www.runoob.com/html/html-tutorial.html",
               "http://www.runoob.com/css/css-tutorial.html",
           ]
       
           def parse(self, response):
           		
           	 items=[]
           	  
               for sel in response.xpath('//ul/li'):
                   item = Website()
                   # extract()方法返回的都是unicode字串
                   # xpath返回的是包含一個元素的列表
                   item['title'] = sel.xpath('a/text()').extract()
                   item['link'] = sel.xpath('a/@href').extract()
                   item['desc'] = sel.xpath('text()').extract()
       				
       			  items.append(item)
                   # 將獲取的資料交給pipelines
                   # yield item
       
                   # 返回資料,不經過pipeline
                   return items
      
    4. 執行爬蟲並儲存到指定檔案

       scrapy crawl runoob  -o runoob.json
      

      新建run.py

       from scrapy.cmdline import execute
       execute(['scrapy', 'crawl', 'runoobSpider'])
       
       #execute('scrapy crawl runoobSpider -o items.csv -t csv'.split())