首頁 後端開發 Python教學 Scrapy自備爬蟲模板的資料抓取應用

Scrapy自備爬蟲模板的資料抓取應用

Jun 22, 2023 am 09:24 AM
爬蟲 資料抓取 scrapy

隨著網路科技的不斷發展,爬蟲技術也得到了廣泛的應用。爬蟲技術能夠自動化地抓取網路上的數據,並將其儲存在資料庫中,為數據分析和資料探勘提供了便利。 Scrapy作為Python中非常著名的爬蟲框架,自帶了一些通用的爬蟲模板,可以快速爬取目標網站上的數據,並自動保存到本地或雲端資料庫中。本文將介紹如何使用Scrapy自備的爬蟲模板進行資料抓取,以及如何在抓取過程中進行資料清洗、解析和儲存。

一、Scrapy爬蟲模板介紹

Scrapy自帶了一些爬蟲模板,包括基礎的Spider模板、CrawlSpider模板和XmlFeedSpider模板等。 Spider模板是最基本的爬蟲模板,優點在於適用範圍廣,容易上手。 CrawlSpider模板則是一種基於規則的爬蟲模板,可以快速爬取多級別鏈接,並支援自訂規則。 XmlFeedSpider範本則是適用於XML格式的爬蟲範本。使用這些模板進行資料抓取,可以大幅降低程式設計師的開發難度,並且能夠提高爬取效率。

二、Scrapy爬蟲模板應用

下面以一個實際的例子來說明如何使用Scrapy自帶的Spider模板進行資料抓取。我們將要爬取的目標網站是一個電影資訊網站,網站首頁上列出了最新的電影資訊。我們需要從這個網站上爬取電影的名稱、導演、演員、評分等信息,並將其保存到本地資料庫中。

  1. 建立Scrapy工程

首先,需要打開命令列窗口,切換到目標工作目錄下,然後輸入以下命令:

scrapy startproject movies
登入後複製

這個命令將會建立一個名為movies的Scrapy工程,在工程目錄下,會包含一個名為spiders的子目錄,該目錄用於放置爬蟲程式。

  1. 建立Spider範本

在工程目錄下,使用下列指令來建立一個名為movie_spider的Spider:

scrapy genspider movie_spider www.movies.com
登入後複製

這個指令將會自動產生一個基於Spider模板的程序,其中www.movi​​es.com代表目標網站的網域名稱。在spiders目錄下,會出現一個名為movie_spider.py的文件,其內容如下:

import scrapy

class MovieSpider(scrapy.Spider):
    name = 'movie_spider'
    allowed_domains = ['www.movies.com']
    start_urls = ['http://www.movies.com/']

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

這是一個最基本的Spider程式。其中name表示爬蟲名稱,allowed_domains表示允許爬取的網域列表,start_urls表示起始爬取網址列表。在parse方法中,我們需要編寫資料解析和抓取的程式碼。

  1. 資料抓取與解析

我們需要編寫程式碼從response物件中抓取和解析目標網站的資料。對於剛才提到的電影資訊網站,我們可以使用XPath或CSS選擇器來定位頁面中的元素。假設電影名稱保存在頁面中的一個class為movie-name的div元素中,那麼我們可以使用下面的程式碼來提取所有的電影名稱:

def parse(self, response):
    movies = response.xpath('//div[@class="movie-name"]/text()').extract()
    for movie in movies:
        yield {'name': movie}
登入後複製

這裡,我們使用了XPath的語法來定位所有class為movie-name的div元素,並使用extract方法來提取元素中的文字內容。接著,我們使用for迴圈將每個電影名稱yield出來,作為生成器的輸出。

類似地,我們可以透過XPath或CSS選擇器來定位其他我們感興趣的元素。例如,導演和演員資訊可能會保存在class為director的div元素中,評分資訊可能會保存在class為rate的div元素中。

  1. 資料儲存

在Spider程式中,我們需要編寫程式碼將抓取到的資料儲存到本機或雲端資料庫。 Scrapy支援將資料保存到多種不同的資料庫中,包括MySQL、PostgreSQL、MongoDB等。

例如,我們可以使用MySQL資料庫來保存電影資訊。在spiders目錄下,我們可以建立一個名為mysql_pipeline.py的文件,其中包含以下程式碼:

import pymysql

class MysqlPipeline(object):
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='movie_db', charset='utf8')

    def process_item(self, item, spider):
        cursor = self.conn.cursor()
        sql = "INSERT INTO movie(name, director, actors, rate) VALUES(%s, %s, %s, %s)"
        cursor.execute(sql, (item['name'], item['director'], item['actors'], item['rate']))
        self.conn.commit()

    def __del__(self):
        self.conn.close()
登入後複製

該程式將實作資料儲存到MySQL資料庫中,其中movie_db是資料庫名稱,movie表將包含name、director、actors、rate四個字段,用於保存電影名稱、導演、演員和評分資訊。 process_item方法用於將Spider程式中產生的item儲存到資料庫中。

為了使用mysql_pipeline.py文件,我們還需要在settings.py文件中添加以下配置:

ITEM_PIPELINES = {
    'movies.spiders.mysql_pipeline.MysqlPipeline': 300
}
登入後複製

這裡,'movies.spiders.mysql_pipeline.MysqlPipeline'指定了mysql_pipeline.py文件的位置和類別名稱。數字300表示資料處理的優先級,數字越小優先級越高。

  1. 執行Scrapy程式

在spiders目錄下,執行下列指令即可執行Scrapy程式:

scrapy crawl movie_spider
登入後複製

這個指令將會啟動名為movie_spider的爬蟲程序,開始抓取目標網站的資料並儲存到MySQL資料庫中。

三、總結

本文介紹如何使用Scrapy自備的爬蟲範本進行資料擷取,包括Spider範本、CrawlSpider範本和XmlFeedSpider範本。我們以一個實際的範例為例,說明如何使用Spider模板進行資料抓取和解析,並將結果儲存到MySQL資料庫中。使用Scrapy進行資料抓取,可以大幅提高資料收集的效率和質量,並為後續的資料分析、資料探勘等工作提供強大的支援。

以上是Scrapy自備爬蟲模板的資料抓取應用的詳細內容。更多資訊請關注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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
python爬蟲要學多久 python爬蟲要學多久 Oct 25, 2023 am 09:44 AM

學習Python爬蟲的時間因人而異,取決於個人的學習能力、學習方法、學習時間和經驗等因素。學習Python爬蟲不僅是學習技術本身,還需要具備良好的資訊蒐集能力、問題解決能力和團隊協作能力。透過不斷學習和實踐,您將逐漸成長為優秀的Python爬蟲開發者。

Scrapy基於Ajax非同步載入實作方法 Scrapy基於Ajax非同步載入實作方法 Jun 22, 2023 pm 11:09 PM

Scrapy是一個開源的Python爬蟲框架,它可以快速且有效率地從網站上取得資料。然而,許多網站採用了Ajax非同步載入技術,使得Scrapy無法直接取得資料。本文將介紹基於Ajax非同步載入的Scrapy實作方法。一、Ajax非同步載入原理Ajax非同步載入:在傳統的頁面載入方式中,瀏覽器發送請求到伺服器後,必須等待伺服器回傳回應並將頁面全部載入完畢才能進行下一步操

Scrapy案例解析:如何抓取LinkedIn上公司訊息 Scrapy案例解析:如何抓取LinkedIn上公司訊息 Jun 23, 2023 am 10:04 AM

Scrapy是一個基於Python的爬蟲框架,可以快速且方便地獲取網路上的相關資訊。在本篇文章中,我們將透過Scrapy案例來詳細解析如何抓取LinkedIn上的公司資訊。確定目標URL首先,我們需要明確我們的目標是LinkedIn上的公司資訊。因此,我們需要找到LinkedIn公司資訊頁面的URL。開啟LinkedIn網站,在搜尋框中輸入公司名稱,在

在Scrapy爬蟲中使用Selenium和PhantomJS 在Scrapy爬蟲中使用Selenium和PhantomJS Jun 22, 2023 pm 06:03 PM

在Scrapy爬蟲中使用Selenium和PhantomJSScrapy是Python下的一個優秀的網路爬蟲框架,已經被廣泛應用於各個領域中的資料收集和處理。在爬蟲的實作中,有時候需要模擬瀏覽器操作去取得某些網站呈現的內容,這時候就需要用到Selenium和PhantomJS。 Selenium是模擬人類對瀏覽器的操作,讓我們可以自動化地進行網頁應用程式測試

高效率的Java爬蟲實戰:網頁資料抓取技巧分享 高效率的Java爬蟲實戰:網頁資料抓取技巧分享 Jan 09, 2024 pm 12:29 PM

Java爬蟲實戰:如何有效率地抓取網頁資料引言:隨著網路的快速發展,大量有價值的資料儲存在各種網頁中。而要獲取這些數據,往往需要手動訪問每個網頁並逐一提取信息,這無疑是一項繁瑣且耗時的工作。為了解決這個問題,人們開發了各種爬蟲工具,其中Java爬蟲是最常用的之一。本文將帶領讀者了解如何使用Java編寫高效的網頁爬蟲,並透過具體程式碼範例來展示實踐。一、爬蟲的基

Scrapy優化技巧:如何減少重複URL的爬取,提高效率 Scrapy優化技巧:如何減少重複URL的爬取,提高效率 Jun 22, 2023 pm 01:57 PM

Scrapy是一個功能強大的Python爬蟲框架,可用於從網路上取得大量的資料。但是,在進行Scrapy開發時,經常會遇到重複URL的爬取問題,這會浪費大量的時間和資源,影響效率。本文將介紹一些Scrapy優化技巧,減少重複URL的爬取,提升Scrapy爬蟲的效率。一、使用start_urls和allowed_domains屬性在Scrapy爬蟲中,可

PHP爬蟲類別的常見問題解析與解決方案 PHP爬蟲類別的常見問題解析與解決方案 Aug 06, 2023 pm 12:57 PM

PHP爬蟲類的常見問題解析與解決方案引言:隨著網路的快速發展,網路資料的取得成為了各個領域中的重要環節。而PHP作為一門廣泛應用的腳本語言,其在資料獲取方面有著強大的能力,其中一種常用的技術就是爬蟲。然而,在開發和使用PHP爬蟲類的過程中,我們常常會遇到一些問題。本文將分析並給出這些問題的解決方案,並提供相應的程式碼範例。一、無法正確解析目標網頁的資料問題描

深度使用Scrapy:如何爬取HTML、XML、JSON資料? 深度使用Scrapy:如何爬取HTML、XML、JSON資料? Jun 22, 2023 pm 05:58 PM

Scrapy是一款強大的Python爬蟲框架,可以幫助我們快速、靈活地取得網路上的資料。在實際爬取過程中,我們會經常遇到HTML、XML、JSON等各種資料格式。在這篇文章中,我們將介紹如何使用Scrapy分別爬取這三種資料格式的方法。一、爬取HTML資料建立Scrapy專案首先,我們需要建立一個Scrapy專案。打開命令列,輸入以下命令:scrapys

See all articles