python使用Scrapy庫進行數(shù)據(jù)提取和處理的方法詳解
一、數(shù)據(jù)提?。篠electors和Item
在Scrapy中,提取數(shù)據(jù)主要通過Selectors來完成。Selectors基于XPath或CSS表達式的查詢語言來選取HTML文檔中的元素。你可以在你的爬蟲中使用response對象的xpath或css方法來創(chuàng)建一個Selector對象。
例如,我們可以修改我們的QuotesSpider爬蟲,使用Selectors來提取每個引用的文本和作者:
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'):
text = quote.css('span.text::text').get()
author = quote.css('span small::text').get()
print(f'Text: {text}, Author: {author}')此外,Scrapy還提供了Item類,可以定義你想要收集的數(shù)據(jù)結(jié)構(gòu)。Item類非常適合收集結(jié)構(gòu)化數(shù)據(jù),如我們從quotes.toscrape.com中獲取的引用:
import scrapy
class QuoteItem(scrapy.Item):
text = scrapy.Field()
author = scrapy.Field()然后我們可以修改QuotesSpider爬蟲,使其生成和收集QuoteItem對象:
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'):
item = QuoteItem()
item['text'] = quote.css('span.text::text').get()
item['author'] = quote.css('span small::text').get()
yield item二、數(shù)據(jù)處理:Pipelines
Scrapy使用數(shù)據(jù)管道(pipelines)來處理爬蟲從網(wǎng)頁中抓取的Item。當爬蟲生成一個Item,它將被發(fā)送到Item Pipeline進行處理。
Item Pipeline是一些按照執(zhí)行順序排列的類,每個類都是一個數(shù)據(jù)處理單元。每個Item Pipeline組件都是一個Python類,必須實現(xiàn)一個process_item方法。這個方法必須返回一個Item對象,或者拋出DropItem異常,被丟棄的item將不會被之后的pipeline組件所處理。
例如,我們可以添加一個Pipeline,將收集的引用保存到JSON文件中:
import json
class JsonWriterPipeline(object):
def open_spider(self, spider):
self.file = open('quotes.jl', 'w')
def close_spider(self, spider):
self.file.close()
def process_item(self, item, spider):
line = json.dumps(dict(item)) + "\n"
self.file.write(line)
return item然后你需要在項目的設置文件(settings.py)中啟用你的Pipeline:
ITEM_PIPELINES = {
'tutorial.pipelines.JsonWriterPipeline': 1,
}在這篇文章中,我們更深入地探討了Scrapy的功能,包括如何使用Selectors和Item提取數(shù)據(jù),如何使用Pipelines處理數(shù)據(jù)。在下一篇文章中,我們將學習如何使用Scrapy處理更復雜的情況,如登錄、cookies、以及如何避免爬蟲被網(wǎng)站識別和封鎖等問題。
到此這篇關于python使用Scrapy庫進行數(shù)據(jù)提取和處理的方法詳解的文章就介紹到這了,更多相關python Scrapy數(shù)據(jù)提取和處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
聊聊python dropna()和notnull()的用法區(qū)別
這篇文章主要介紹了聊聊python dropna()和notnull()的用法區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
使用python+requests+pytest實現(xiàn)接口自動化
這篇文章主要介紹了使用python+requests+pytest實現(xiàn)接口自動化,在當前互聯(lián)網(wǎng)產(chǎn)品迭代頻繁的背景下,回歸測試的時間越來越少,但接口自動化測試因其實現(xiàn)簡單、維護成本低,容易提高覆蓋率等特點,越來越受重視,需要的朋友可以參考下2023-08-08
Ubuntu18.04安裝 PyCharm并使用 Anaconda 管理的Python環(huán)境
這篇文章主要介紹了Ubuntu18.04安裝 PyCharm并使用 Anaconda 管理的Python環(huán)境的教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
python機器學習之神經(jīng)網(wǎng)絡(三)
這篇文章主要為大家詳細介紹了python機器學習之神經(jīng)網(wǎng)絡第三篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12

