首頁  >  文章  >  後端開發  >  學習Scrapy:從基礎到高級

學習Scrapy:從基礎到高級

PHPz
PHPz原創
2024-02-19 19:07:06957瀏覽

學習Scrapy:從基礎到高級

Scrapy安裝教學:從入門到精通,需要具體程式碼範例

導語:
Scrapy是一個功能強大的Python開源網路爬蟲框架,它可用於抓取網頁、擷取資料、進行資料清洗和持久化等一系列任務。本文將帶您逐步了解Scrapy的安裝過程,並提供具體的程式碼範例,幫助您從入門到精通Scrapy框架。

一、安裝Scrapy
要安裝Scrapy,首先要確保您已安裝好Python和pip。然後,打開命令列終端,並輸入以下命令進行安裝:

pip install scrapy

安裝過程可能需要一些時間,請耐心等待。如果您遇到了權限問題,可以嘗試在命令前面加上sudo

二、建立Scrapy專案
安裝完成後,我們可以使用Scrapy的命令列工具來建立新的Scrapy專案。在命令列終端機中,進入您想要建立專案的目錄,並執行下列命令:

scrapy startproject tutorial

這將在目前目錄下建立名為"tutorial"的Scrapy專案資料夾。進入該資料夾,我們可以看到如下的目錄結構:

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

其中,scrapy.cfg是Scrapy專案的配置文件,tutorial資料夾是我們自己的程式碼資料夾。

三、定義爬蟲
在Scrapy中,我們使用爬蟲(spider)來定義抓取網頁和提取資料的規則。在spiders目錄下建立一個新的Python文件,命名為quotes_spider.py(可以根據實際需求自行命名),然後使用以下程式碼定義一個簡單的爬蟲:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('span small::text').get(),
            }

        next_page = response.css('li.next a::attr(href)').get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

在上述程式碼中,我們創建了一個名為QuotesSpider的爬蟲。其中,name屬性是爬蟲的名稱,start_urls屬性是我們希望抓取的第一個頁面的URL,parse方法是爬蟲預設的解析方法,用於解析網頁和提取資料。

四、運行爬蟲
在命令列終端機中,進入專案的根目錄下(即tutorial資料夾),並執行以下命令來啟動爬蟲並開始抓取數據:

scrapy crawl quotes

爬蟲將會開始抓取初始URL中的頁面,並根據我們定義的規則進行解析和提取資料。

五、儲存資料
一般情況下,我們會將抓取到的資料進行保存。在Scrapy中,我們可以使用Item Pipeline來實現資料的清洗、處理和儲存。在pipelines.py檔案中,新增以下程式碼:

import json

class TutorialPipeline:
    def open_spider(self, spider):
        self.file = open('quotes.json', 'w')

    def close_spider(self, spider):
        self.file.close()

    def process_item(self, item, spider):
        line = json.dumps(dict(item)) + "
"
        self.file.write(line)
        return item

在上述程式碼中,我們建立了一個名為TutorialPipeline的Item Pipeline。其中,open_spider方法在爬蟲啟動時會被調用,用於初始化檔案;close_spider方法在爬蟲結束時會被調用,用於關閉檔案;process_item方法會對每個抓取到的資料項目進行處理和保存。

六、設定Scrapy專案
settings.py檔案中,可以對Scrapy專案進行各種設定。以下是一些常用的配置項目:

  • ROBOTSTXT_OBEY:是否遵守robots.txt協定;
  • USER_AGENT#:設定使用者代理,在爬蟲中可以模擬不同的瀏覽器;
  • ITEM_PIPELINES:啟用和設定Item Pipeline;
  • DOWNLOAD_DELAY:設定下載延遲,以避免對目標網站造成過大的壓力;

七、總結
透過以上步驟,我們已經完成了Scrapy的安裝和使用。希望本文能幫助您從入門到精通Scrapy框架。如果您想進一步學習Scrapy更多進階功能和用法,請參考Scrapy官方文檔,並結合實際專案進行練習和探索。祝您在爬蟲的世界裡成功!

以上是學習Scrapy:從基礎到高級的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn