Scrapy是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架。 其能夠應用在數據挖掘,信息處理或存儲歷史數據等一系列的程序中。
其最初是爲了頁面抓取 (更確切來講, 網絡抓取 )所設計的, 也能夠應用在獲取API所返回的數據(例如 Amazon Associates Web Services ) 或者通用的網絡爬蟲。Scrapy用途普遍,能夠用於數據挖掘、監測和自動化測試。python
Scrapy 使用了 Twisted異步網絡庫來處理網絡通信。總體架構大體以下mysql
Scrapy主要包括瞭如下組件:sql
Scrapy運行流程大概以下:數據庫
建立Scrapy框架項目網絡
Scrapy框架項目是有python安裝目錄裏的Scripts文件夾裏scrapy.exe文件建立的,因此python安裝目錄下的Scripts文件夾要配置到系統環境變量裏,才能運行命令生成項目架構
建立項目框架
首先運行cmd終端,而後cd 進入要建立項目的目錄,如:cd H:\py\14dom
進入要建立項目的目錄後執行命令 scrapy startproject 項目名稱異步
scrapy startproject pach1
項目建立成功scrapy
項目說明
目錄結構以下:
├── firstCrawler
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ └── __init__.py
└── scrapy.cfg
建立第一個爬蟲
建立爬蟲文件在spiders文件夾裏建立
一、建立一個類必須繼承scrapy.Spider類,類名稱自定義
類裏的屬性和方法:
name屬性,設置爬蟲名稱
allowed_domains屬性,設置爬取的域名,不帶http
start_urls屬性,設置爬取的URL,帶http
parse()方法,爬取頁面後的回調方法,response參數是一個對象,封裝了全部的爬取信息
response對象的方法和屬性
response.url獲取抓取的rul
response.body獲取網頁內容字節類型
response.body_as_unicode()獲取網站內容字符串類型
# -*- coding: utf-8 -*- import scrapy class AdcSpider(scrapy.Spider): name = 'adc' #設置爬蟲名稱 allowed_domains = ['www.shaimn.com'] start_urls = ['http://www.shaimn.com/xinggan/'] def parse(self, response): current_url = response.url #獲取抓取的rul body = response.body #獲取網頁內容字節類型 unicode_body = response.body_as_unicode() #獲取網站內容字符串類型 print(unicode_body)
爬蟲寫好後執行爬蟲,cd到爬蟲目錄裏執行scrapy crawl adc --nolog命令,說明:scrapy crawl adc(adc表示爬蟲名稱) --nolog(--nolog表示不顯示日誌)
也能夠在PyCharm執行命令