Scrapy(三)創建項目

創建項目

創建項目是爬取內容的第一步,之前已經講過,Scrapy通過scrapy startproject <project_name>命令來在當前目錄下創建一個新的項目。
下面我們創建一個爬取博客園(‘https://www.cnblogs.com/’)文章信息的項目

scrapy startproject cnblog
其中cnblog是你的項目的名字,可以自己定義。
其目錄結構如下

cnblog/
    scrapy.cfg
        
    cnblog/
         __init__.py
    
        items.py
    
        pipelines.py
        
        middlewares.py
    
        settings.py
    
        spiders/
            __init__.py

下面簡單的講解一下各目錄/文件的作用:

  • scrapy.cfg
    項目的配置文件,帶有這個文件的那個目錄作爲scrapy項目的根目錄
  • items.py
    定義你所要抓取的字段
  • pipelines.py
    管道文件,當spider抓取到內容(item)以後,會被送到這裏,這些信息(item)在這裏會被清洗,去重,保存到文件或者數據庫。
  • middlewares.py
    中間件,主要是對功能的拓展,你可以添加一些自定義的功能,比如添加隨機user-agent, 添加proxy。
  • settings.py
    設置文件,用來設置爬蟲的默認信息,相關功能開啓與否,比如是否遵循robots協議,設置默認的headers,設置文件的路徑,中間件的執行順序等等。
  • spiders/
    在這個文件夾下面,編寫你自定義的spider。

編寫爬蟲

編寫spider文件

在項目中的spiders文件夾下面創建一個文件,命名爲cnblog_spider.py我們將在這個文件裏面編寫我們的爬蟲。先上代碼再解釋。

import scrapy

class Cnblog_Spider(scrapy.Spider):

    name = "cnblog"
    allowed_domains = ["cnblogs.com"]
    start_urls = [
     'https://www.cnblogs.com/',
    ]

    def parse(self, response):
        title = response.xpath('//a[@class="titlelnk"]/text()').extract()
        link = response.xpath('//a[@class="titlelnk"]/@href').extract()
        print(title)
        print(link)
  • 導入scrapy模塊
  • 定義一個spider類,繼承自scrapy.Spider父類。

下面是三個重要的內容

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

修改settings.py文件

將settings.py文件裏面的下列內容修改如下,其餘的內容不動。

ROBOTSTXT_OBEY = False   #不遵循robots協議

#去掉下面的這個註釋,以設置請求頭信息,僞造瀏覽器headers,並手動添加一個user-agent
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
  #user-agent新添加
  'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}

運行我們的爬蟲項目

至此,項目必要的信息已經全部完成了,下面就是運行我們的爬蟲項目
進入帶有scrapy.cfg文件的那個目錄,前面已經說過,這是項目的根目錄,執行下面的命令
scrapy crawl cnblog
cnblog是spiders/cnblog_spider.py文件裏面我們定義的那個具有唯一性的name
你會發現打印出了博客園首頁的文章列表和文章的url信息,如下所示。
在這裏插入圖片描述
轉自:https://www.cnblogs.com/cnkai/p/7396835.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章