首頁 後端開發 Python教學 深度使用Scrapy:如何爬取HTML、XML、JSON資料?

深度使用Scrapy:如何爬取HTML、XML、JSON資料?

Jun 22, 2023 pm 05:58 PM
xml html scrapy

Scrapy是一款強大的Python爬蟲框架,可以幫助我們快速、靈活地取得網路上的資料。在實際爬取過程中,我們會經常遇到HTML、XML、JSON等各種資料格式。在這篇文章中,我們將介紹如何使用Scrapy分別爬取這三種資料格式的方法。

一、爬取HTML資料

  1. 建立Scrapy專案

首先,我們需要建立一個Scrapy專案。開啟命令列,輸入以下指令:

scrapy startproject myproject
登入後複製
登入後複製
登入後複製

這個指令將會在目前資料夾下建立一個叫做myproject的Scrapy專案。

  1. 設定起始URL

接下來,我們需要設定起始的URL。在myproject/spiders目錄下,建立一個名為spider.py的文件,編輯文件,輸入以下程式碼:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com']

    def parse(self, response):
        pass
登入後複製

程式碼首先匯入了Scrapy函式庫,然後定義了一個爬蟲類MySpider,設定了一個名為myspider的spider名稱,並設定了一個起始URL為http://example.com。最後定義了一個parse方法。 parse方法預設會被Scrapy調用,用來處理回應資料。

  1. 解析回應資料

接下來,我們需要解析回應資料。繼續編輯myproject/spiders/spider.py文件,加入以下程式碼:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com']

    def parse(self, response):
        title = response.xpath('//title/text()').get()
        yield {'title': title}
登入後複製

程式碼中,我們使用response.xpath()方法來取得HTML頁面中的標題。使用yield來傳回字典類型數據,包含了我們獲取到的標題。

  1. 運行爬蟲

最後,我們需要運行Scrapy爬蟲。在命令列中輸入以下命令:

scrapy crawl myspider -o output.json
登入後複製
登入後複製
登入後複製

這個命令會將資料輸出到output.json檔案中。

二、爬取XML資料

  1. 建立Scrapy專案

同樣地,我們首先需要建立一個Scrapy專案。開啟命令列,輸入以下指令:

scrapy startproject myproject
登入後複製
登入後複製
登入後複製

這個指令將會在目前資料夾下建立一個叫做myproject的Scrapy專案。

  1. 設定起始URL

在myproject/spiders目錄下,建立一個名為spider.py的文件,編輯文件,輸入以下程式碼:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com/xml']

    def parse(self, response):
        pass
登入後複製

程式碼中,我們設定了一個名為myspider的spider名稱,並設定了一個起始URL為http://example.com/xml。

  1. 解析回應資料

繼續編輯myproject/spiders/spider.py文件,加入以下程式碼:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com/xml']

    def parse(self, response):
        for item in response.xpath('//item'):
            yield {
                'title': item.xpath('title/text()').get(),
                'link': item.xpath('link/text()').get(),
                'desc': item.xpath('desc/text()').get(),
            }
登入後複製

程式碼中,我們使用response. xpath()方法來取得XML頁面中的資料。使用for迴圈來遍歷item標籤,取得title、link、desc三個標籤內的文字數據,使用yield來傳回字典類型的資料。

  1. 運行爬蟲

最後,我們同樣需要運行Scrapy爬蟲。在命令列中輸入以下命令:

scrapy crawl myspider -o output.json
登入後複製
登入後複製
登入後複製

這個命令會將資料輸出到output.json檔案中。

三、爬取JSON資料

  1. 建立Scrapy專案

同樣地,我們需要建立一個Scrapy專案。開啟命令列,輸入以下指令:

scrapy startproject myproject
登入後複製
登入後複製
登入後複製

這個指令將會在目前資料夾下建立一個叫做myproject的Scrapy專案。

  1. 設定起始URL

在myproject/spiders目錄下,建立一個名為spider.py的文件,編輯文件,輸入以下程式碼:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com/json']

    def parse(self, response):
        pass
登入後複製

程式碼中,我們設定了一個名為myspider的spider名稱,並設定了一個起始URL為http://example.com/json。

  1. 解析回應資料

繼續編輯myproject/spiders/spider.py文件,加入以下程式碼:

import scrapy
import json

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com/json']

    def parse(self, response):
        data = json.loads(response.body)
        for item in data['items']:
            yield {
                'title': item['title'],
                'link': item['link'],
                'desc': item['desc'],
            }
登入後複製

程式碼中,我們使用json. loads()方法來解析JSON格式的資料。使用for迴圈來遍歷items數組,取得每個item的title、link、desc三個屬性,使用yield來傳回字典類型的資料。

  1. 運行爬蟲

最後,同樣需要運行Scrapy爬蟲。在命令列中輸入以下命令:

scrapy crawl myspider -o output.json
登入後複製
登入後複製
登入後複製

這個命令會將資料輸出到output.json檔案中。

四、總結

在本文中,我們介紹如何使用Scrapy分別爬取HTML、XML、JSON資料。透過以上例子,你可以了解到Scrapy的基本用法,也可以根據需要深入學習更多進階用法,希望能給你在爬蟲技術方面提供幫助。

以上是深度使用Scrapy:如何爬取HTML、XML、JSON資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

See all articles