Scrapy爬蟲框架
Scrapy簡介
Scrapy 是用 Python編寫而成用以爬取網站資料、提取結構性資料而編寫的應用框架。通過使用Scrapy框架,我們能夠簡單的爬取指定網站的內容或圖片。
Scrapy框架檔案結構
首先我們建立一個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
Scrapy爬取部落格園
1.進入專案資料夾,建立自己的爬蟲檔案,如下的命令在終端執行。
cd cnblog
scrapy genspider cnblog_spider cnblogs.com
2.進入我們剛才建立的爬蟲檔案cnblog_spider,發現框架已經自動生成了爬蟲主要程式碼,只要補充自己想要爬取的專案即可,我希望爬取部落格園的文章連結以及題目,所以我補充瞭如下程式碼,順便進行輸出,可以直觀的看到專案是否執行成功。
title = response.xpath('//a[@class="post-item-title"]/text()').extract()
url = response.xpath('//a[@class="post-item-title"]/@href').extract()
print(title)
print(url)
3.在終端執行爬蟲專案。
scrapy crawl cnblog_spider
得到如下執行結果,至此一個簡單的爬蟲專案就執行成功了。
Scrapy實現檔案儲存
如果希望儲存我們爬取的資訊,則需要在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 = {
'cnblog.pipelines.CnblogPipeline': 300, # 數字代表優先順序
'cnblog.pipelines.PrintPipeline': 500
}
至此,就可以執行Scrapy框架了!
執行完成!!!恭喜你,程式無Bug!!!
相關文章
- 爬蟲(9) - Scrapy框架(1) | Scrapy 非同步網路爬蟲框架爬蟲框架非同步
- python爬蟲Scrapy框架Python爬蟲框架
- Python爬蟲—Scrapy框架Python爬蟲框架
- 爬蟲框架-scrapy的使用爬蟲框架
- Scrapy爬蟲框架的使用爬蟲框架
- Scrapy框架的使用之Scrapy通用爬蟲框架爬蟲
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- Python爬蟲教程-31-建立 Scrapy 爬蟲框架專案Python爬蟲框架
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- 爬蟲--Scrapy簡易爬蟲爬蟲
- Python3爬蟲(十八) Scrapy框架(二)Python爬蟲框架
- python 爬蟲對 scrapy 框架的認識Python爬蟲框架
- Python爬蟲 ---scrapy框架初探及實戰Python爬蟲框架
- Scrapy爬蟲-草稿爬蟲
- 為什麼使用Scrapy框架來寫爬蟲?框架爬蟲
- Python爬蟲 --- 2.3 Scrapy 框架的簡單使用Python爬蟲框架
- 爬蟲代理 Scrapy 框架詳細介紹 2爬蟲框架
- Python爬蟲框架:scrapy爬取高考派大學資料Python爬蟲框架
- Scrapy爬蟲框架如何使用代理進行採集爬蟲框架
- Python爬蟲教程-32-Scrapy 爬蟲框架專案 Settings.py 介紹Python爬蟲框架
- Python Scrapy 爬蟲(二):scrapy 初試Python爬蟲
- scrapy爬蟲代理池爬蟲
- 爬蟲實戰scrapy爬蟲
- 【Python篇】scrapy爬蟲Python爬蟲
- Python爬蟲深造篇(四)——Scrapy爬蟲框架啟動一個真正的專案Python爬蟲框架
- Scrapy框架中的Middleware擴充套件與Scrapy-Redis分散式爬蟲框架套件Redis分散式爬蟲
- scrapy之分散式爬蟲scrapy-redis分散式爬蟲Redis
- scrapy + mogoDB 網站爬蟲Go網站爬蟲
- scrapy 框架新建一個 爬蟲專案詳細步驟框架爬蟲
- 學好Python不加班系列之SCRAPY爬蟲框架的使用Python爬蟲框架
- Python爬蟲之scrapy框架簡介及環境安裝Python爬蟲框架
- python爬蟲 之 scrapy框架採集2000期彩票資料Python爬蟲框架
- 爬蟲(14) - Scrapy-Redis分散式爬蟲(1) | 詳解爬蟲Redis分散式
- 打造高效的分散式爬蟲系統:利用Scrapy框架實現分散式爬蟲框架
- 介紹一款能取代 Scrapy 的 Python 爬蟲框架 - feapderPython爬蟲框架
- Windows下安裝配置爬蟲工具Scrapy及爬蟲環境Windows爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲