1,創建項目
a,首先在命令行進入你想創建項目的目錄,接著輸入scrapy startproject 項目名
b,cd 項目名 輸入 scrapy genspider 爬蟲名 (一個項目可以創建多個爬蟲)
2,項目目錄結構
引擎(Scrapy)
用來處理整個系統的數據流處理, 觸發事務(框架核心)
調度器(Scheduler)
用來接受引擎發過來的請求, 壓入隊列中, 并在引擎再次請求的時候返回. 可以想像成一個URL(抓取網頁的網址或者說是鏈接)的優先隊列, 由它來決定下一個要抓取的網址是什么, 同時去除重復的網址
下載器(Downloader)
用于下載網頁內容, 并將網頁內容返回給蜘蛛(Scrapy下載器是建立在twisted這個高效的異步模型上的)
爬蟲(Spiders)
爬蟲是主要干活的, 用于從特定的網頁中提取自己需要的信息, 即所謂的實體(Item)。用戶也可以從中提取出鏈接,讓Scrapy繼續抓取下一個頁面
項目管道(Pipeline)
負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。當頁面被爬蟲解析后,將被發送到項目管道,并經過幾個特定的次序處理數據。
下載器中間件(Downloader Middlewares)
位于Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
爬蟲中間件(Spider Middlewares)
介于Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應輸入和請求輸出。
調度中間件(Scheduler Middewares)
介于Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。
3,項目結構:
items.py 用來定義存儲爬蟲下載下來數據的數據模型
middlewares:中間件
pipelines.py:將items.py模型定義的數據持久化(存到數據庫,本地等)
settings.py:配置信息,比如配置robot.text為false,配置請求頭 ,配置pipelnes等等
scrapy.cfg :配置項目信息
spiders包:爬蟲代碼
4,注意事項
a,settings.py中設置請求頭
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
}
b,settings.py中
ROBOTSTXT_OBEY = False #此處默認為True 改成False 這樣,當根目錄找不到robots.txt文件的時候依舊能進行爬取
c,在項目中建一個start.py文件,代碼如下:目的是不用每次在項目目錄下的命令行中輸入 scrapy crawl 爬蟲名
from scrapy import cmdline
cmdline.execute("scrapy crawl qsbk_spider".split())
# cmdline.execute(['scrapy','crawl','qsbk_spider']) 這兩行是一樣的
4,在爬蟲文件爬到數據后通過yield(在python 里就是一個生成器)生成給items,有items傳給piplelines