Scrapy是Python中最流行的網頁爬蟲框架之一,強大且功能豐富。通過Scrapy,你可以快速創建一個爬蟲,高效地抓取和處理網絡數據。在這篇文章中,我們將介紹如何使用Scrapy構建一個基礎的爬蟲。
一、Scrapy簡介及安裝
Scrapy是一個用Python實現的開源網頁爬蟲框架,主要用於網頁數據抓取和分析。它提供了所有的基礎功能,包括解析HTML(或其他格式的數據)、處理HTTP請求、處理cookies和session、多線程抓取等等,還提供了多種類型的爬蟲模型,適用於不同的需求。
安裝Scrapy非常簡單,只需要使用pip安裝即可:
pip install Scrapy
二、創建一個Scrapy項目
Scrapy使用一個單獨的項目空間來組織每一個爬蟲。你可以使用Scrapy的命令行工具來創建一個新的項目:
scrapy startproject tutorial
這會創建一個名為"tutorial"的Scrapy項目,項目結構如下:
tutorial/
scrapy.cfg # 項目的配置文件
tutorial/ # 項目的Python模塊
__init__.py
items.py # 項目的數據模型文件
middlewares.py # 項目的中間件文件
pipelines.py # 項目的數據處理管道文件
settings.py # 項目的設置文件
spiders/ # 存放爬蟲代碼的目錄
__init__.py
三、編寫一個簡單的爬蟲
在Scrapy中,爬蟲是一類定義瞭如何爬取某個網站(或一組網站)的類,包括如何進行網頁爬取(即初始URL)、如何跟蹤鏈接、如何從網頁的內容中提取數據等等。
下面我們將創建一個簡單的Scrapy爬蟲,用於爬取quotes.toscrape.com網站的引用內容。首先,我們需要在spiders目錄下創建一個新的Python文件quotes_spider.py:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'http://quotes.toscrape.com/page/1/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = f'quotes-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
self.log(f'Saved file {filename}')
在這個代碼中,我們定義了一個名為QuotesSpider的Scrapy爬蟲。爬蟲首先會請求URLs列表中的每個URL,然後對每個響應進行處理,將響應的內容保存到一個HTML文件中。
四、運行Scrapy爬蟲
創建好爬蟲後,你可以使用Scrapy的命令行工具來運行爬蟲:
scrapy crawl quotes
當你運行這個命令,Scrapy將會找到名為"quotes"的爬蟲,並開始爬取,然後將爬取的內容保存到文件中。
通過這篇文章,你應該對Scrapy有了基本的瞭解,並能夠創建和運行一個簡單的Scrapy爬蟲。在下一篇文章中,我們將更深入地探討Scrapy的功能,包括如何提取數據,如何使用Scrapy的數據管道,如何處理登錄和cookies等等。