scrapy 爬蟲框架從了解到執行

2021-10-09 21:15:07 字數 2889 閱讀 1197

引擎從排程器中取出乙個url,用於接下來的抓取。

爬蟲解析response。

若解析出實體(item),則交給實體管道進行進一步的處理。

若解析出的是url,則把url交給scheduler等待抓取。

首先我們建立乙個scrapy專案,目錄結構如下所示。

cnblog/

scrapy.cfg # 專案的配置檔案

cnblog/

__init__.py

items.py # 定義你所要抓取的字段

pipelines.py # 管道檔案,當spider抓取到內容(item)以後,會被送到這裡,這些資訊(item)在這裡會被清洗,去重,儲存到檔案或者資料庫。

middlewares.py # 中介軟體,主要是對功能的拓展,你可以新增一些自定義的功能,比如新增隨機user-agent, 新增proxy。

settings.py # 設定檔案,用來設定爬蟲的預設資訊,相關功能開啟與否,比如是否遵循robots協議,設定預設的headers,設定檔案的路徑,中介軟體的執行順序等等。

spiders/ # 在這個資料夾下編寫自己的spider

__init__.py

1.進入專案資料夾,建立自己的爬蟲檔案,如下的命令在終端執行。

3.在終端執行爬蟲專案。

scrapy crawl cnblog_spider
得到如下執行結果,至此乙個簡單的爬蟲專案就執行成功了。

如果希望儲存我們爬取的資訊,則需要在items.py檔案中定義它們,item是儲存爬取到的資料的容器,其使用方法和dict字典類似,對於items中定義資訊,只需要根據提示補充**即可。

class cnblogitem(scrapy.item):

# define the fields for your item here like:

# name = scrapy.field()

title = scrapy.field()

url = scrapy.field()

接下來需要在爬蟲檔案中匯入我們剛才在items中定義的cnblogitem類,使用字典的方法就可以給items進行賦值。最後yield生成器,將items傳遞給管道pipeline進行後續操作。

def parse(self, response):

items = cnblogitem()

# extract()使得使提取內容轉換為unicode字串,返回資料型別為list

items['title'] = response.xpath('//a[@class="post-item-title"]/text()').extract()

items['url'] = response.xpath('//a[@class="post-item-title"]/@href').extract()

yield items # 生成器相當於用後銷毀,節省記憶體。

修改管道pipelines.py檔案,這裡本來有乙個自定義的cnblogpipeline類,為了更好的介紹scrapy框架的使用,我這裡又定義了乙個printpipeline類。管道pipelines.py檔案的作用就是實現資料的輸出處理,也可以完成儲存的工作。

class cnblogpipeline:

def process_item(self, item, spider):

with open('cnblogs.txt','a',encoding='utf8') as f:

title = item['title']

url = item['url']

# print(title)

# print(url)

for i,j in zip(title,url):

f.write(i+':'+j+'\n')

return item

class printpipeline:

def process_item(self, item, spider):

print('printitem::'+item['title'])

return item

最後需要在seeting.py檔案中開啟item_pipelines,同時新增在管道中新定義類printpipeline,並且標註優先順序。

item_pipelines =
至此,就可以執行scrapy框架了!

執行完成!!!恭喜你,程式無bug!!!

scrapy爬蟲框架

作者經過幾周的python爬蟲實踐之後,深入學習了一下scrapy這個爬蟲框架,現將一些基本知識和 總結整理一下,以備後查。2.scrapy的命令列使用 這部分網上很多部落格都有總結,不需要背,理解會用主要的命令 startproject crawl fetch list genspider.即可,...

scrapy 爬蟲框架

1.安裝 公升級pip版本 pip install upgrade pip 通過pip安裝scrapy框架 pip install scrapy 安裝成功 只執行scrapy 進行測試是否安裝成功 2.scrapy startproject 爬蟲專案名稱 執行此命令,可以生成乙個爬蟲專案 會預先生成...

Scrapy爬蟲框架

scrapy中的各大元件及其功能 1.scrapy引擎 engine 引擎負責控制資料流在系統的所有元件中流動,並在相應動作發生時觸發事件。2.排程器 scheduler 排程器從引擎接收request並將它們入隊,以便之後引擎請求request時提供給引擎。4.spider。spider是scra...