首頁 >後端開發 >Python教學 >如何使用Scrapy爬取豆瓣圖書及其評分和評論?

如何使用Scrapy爬取豆瓣圖書及其評分和評論?

WBOY
WBOY原創
2023-06-22 10:21:091700瀏覽

隨著網路的發展,人們越來越依賴網路來獲取資訊。而對於圖書愛好者而言,豆瓣圖書已經成為了一個不可或缺的平台。並且,豆瓣圖書也提供了豐富的圖書評分和評論,使讀者能夠更全面地了解一本圖書。但是,手動取得這些資訊無異於大海撈針,這時候,我們可以藉助 Scrapy 工具進行資料爬取。

Scrapy 是一個基於 Python 的開源網路爬蟲框架,它可以幫助我們有效率地從網站上提取資料。在本篇文章中,我將以操作步驟為主,詳細介紹如何使用 Scrapy 爬取豆瓣圖書及其評分和評論。

第一步:安裝 Scrapy

首先,需要在電腦上安裝 Scrapy。如果你已經安裝好 pip(Python 套件管理工具),只需要在終端機或命令列輸入下面的指令:

pip install scrapy

如此,Scrapy 就會被安裝到你的電腦中。如果出現了錯誤或警告,建議根據提示進行相應的調整。

第二步:新建Scrapy 專案

接下來,我們需要在終端機或命令列輸入下面的指令來新建一個Scrapy 專案:

scrapy startproject douban

這個指令會在目前目錄下建立一個名叫douban 的資料夾,其中包含了Scrapy 的基本檔案和目錄結構。

第三個步驟:寫爬蟲程式

在 Scrapy 中,我們需要寫一個爬蟲程式來告訴 Scrapy 如何從網站中提取資料。因此,我們需要新建一個名叫douban_spider.py 的文件,並編寫如下程式碼:

import scrapy

class DoubanSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['book.douban.com']
    start_urls = ['https://book.douban.com/top250']

    def parse(self, response):
        selector = scrapy.Selector(response)
        books = selector.xpath('//tr[@class="item"]')
        for book in books:
            title = book.xpath('td[2]/div[1]/a/@title').extract_first()
            author = book.xpath('td[2]/div[1]/span[1]/text()').extract_first()
            score = book.xpath('td[2]/div[2]/span[@class="rating_nums"]/text()').extract_first()
            comment_count = book.xpath('td[2]/div[2]/span[@class="pl"]/text()').extract_first()
            comment_count = comment_count.strip('()')
            yield {'title': title, 'author': author, 'score': score, 'comment_count': comment_count}

上面的程式碼實作了兩個功能:

  1. 爬取豆瓣圖書top250 頁面的書籍標題、作者、評分和評論數。
  2. 將爬取到的資料以字典的形式傳回。

在這個程式中,我們首先需要定義一個 DoubanSpider 類,並指定爬蟲的名稱、允許爬蟲存取的網域名稱和起始 URL。在 parse 方法中,我們透過 scrapy.Selector 物件進行 HTML 頁面解析,並使用 XPath 表達式取得書籍的相關資訊。

取得資料後,我們使用 yield 關鍵字將資料以字典的形式傳回。這裡的 yield 關鍵字的作用是將函數變成一個生成器,實現一次傳回一個資料的效果。在 Scrapy 中,我們可以透過定義生成器的方式,實現對網站資料的高效抓取。

第四步:執行爬蟲程式

在寫完爬蟲程式後,我們需要在終端機或命令列中執行以下程式碼來啟動爬蟲程式:

scrapy crawl douban -o result.json

這個指令的功能是啟動名為douban 的爬蟲,並將爬取到的資料以JSON 格式輸出到result.json 檔案中。

透過以上四步驟操作,我們就可以成功地爬取豆瓣圖書及其評分和評論資訊了。當然,如果你需要進一步提高爬蟲程序的效率和穩定性,還需要進行一些其他的最佳化和調整。例如:設定延遲時間、防止反爬機制等等。

總之,使用 Scrapy 爬取豆瓣圖書及其評分和評論資訊是一個相對簡單又有趣的任務。如果你對資料爬取和 Python 程式設計有興趣,可以進一步嘗試其他網站的資料爬取,提升自己的程式設計技能。

以上是如何使用Scrapy爬取豆瓣圖書及其評分和評論?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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