scrapy初試

  • 2019 年 12 月 30 日
  • 筆記

文章目錄

  1. 1. scrapy初試
    1. 1.1. 創建項目
    2. 1.2. 其中將會創建以下的文件:
    3. 1.3. 編寫第一個爬蟲
      1. 1.3.1. spider程式碼中內容解析
      2. 1.3.2. 以下是spider目錄下的demo.py的程式碼
    4. 1.4. spider的爬取
    5. 1.5. spider中的數據存取

scrapy初試

創建項目 打開cmd,在終端輸入scrapy startproject tutorial,這裡將在指定的文件夾下創建一個scrapy工程 其中將會創建以下的文件:

  • scrapy.cfg: 項目的配置文件
  • tutorial/: 該項目的python模組。之後您將在此加入程式碼。
  • tutorial/items.py: 項目中的item文件.
  • tutorial/pipelines.py: 項目中的pipelines文件.
  • tutorial/settings.py: 項目的設置文件.
  • tutorial/spiders/: 放置spider程式碼的目錄.
import scrapy  class DmozItem(scrapy.Item):  title = scrapy.Field()  link = scrapy.Field()  desc = scrapy.Field() 

定義item Item是保存爬取到的數據的容器;其使用方法和python字典類似, 並且提供了額外保護機制來避免拼寫錯誤導致的未定義欄位錯誤。 類似在ORM中做的一樣,您可以通過創建一個 scrapy.Item 類, 並且定義類型為 scrapy.Field的類屬性來定義一個Item。 (如果不了解ORM, 不用擔心,您會發現這個步驟非常簡單) 首先根據需要從dmoz.org獲取到的數據對item進行建模。 我們需要從dmoz中獲取名字,url,以及網站的描述。 對此,在item中定義相應的欄位。編輯 tutorial 目錄中的 items.py 文件:

一開始這看起來可能有點複雜,但是通過定義item, 您可以很方便的使用Scrapy的其他方法。而這些方法需要知道您的item的定義. 編寫第一個爬蟲 在工程的根目錄下打開終端輸入scrapy genspider demo douban.com 這裡的demo是spders文件下的主要py文件 douban.com是要爬取的域名,會在demo.py中的 allowed_domains中顯示,主要的功能就是限制爬取的url spider程式碼中內容解析

  • name: 用於區別Spider。 該名字必須是唯一的,您不可以為不同的Spider設定相同的名字。
  • start_urls: 包含了Spider在啟動時進行爬取的url列表。 因此,第一個被獲取到的頁面將是其中之一。 後續的URL則從初始的URL獲取到的數據中提取。
  • parse() 是spider的一個方法。 被調用時,每個初始URL完成下載後生成的 Response 對象將會作為唯一的參數傳遞給該函數。 該方法負責解析返回的數據(response data),提取數據(生成item)以及生成需要進一步處理的URL的 Request對象。

以下是spider目錄下的demo.py的程式碼

import scrapy  class DmozSpider(scrapy.Spider):  name = "dmoz"  allowed_domains = ["dmoz.org"]  start_urls = [          "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",      "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"  ]  def parse(self, response):      filename = response.url.split("/")[-2]      with open(filename, 'wb') as f:          f.write(response.body)

spider的爬取 進入工程的根目錄下打開終端輸入:scrapy crawl dmoz spider中的數據存取 在工程的根目錄下打開終端輸入scrapy crawl dmoz -o items.json 這裡是將數據存儲到json文件中

Tags: