1. 程式人生 > >Scrapy中的splash的安裝應用

Scrapy中的splash的安裝應用

mina smi 渲染 releases 過濾 set 過濾器 個人 toolbox

  因為要去抓取部分經過JavaScript渲染的網頁數據,所以使用scrapy中的Request返回的是沒有經過渲染的網頁代碼,

  因此我們就要運用Scrapy中的 splash 中的 SplashRequest 來進行操作。

  首先我們要使用安裝scrapy-splash:

1、利用pip 安裝 scrapy-splash

  pip install scrapy-splash

2、安裝docker

  安裝docker比較繁瑣,首先要去官網下載docker工具 由於又是Windows7版本 所以下載的是DockerToolbox, 然後手動安裝即可。

  然後安裝過程中,會出現如下情況:(該圖是網上找的)

技術分享圖片

這種時候就要去GitHub裏面下載boot2docker-18.03.0-ce文件並放到黃色線條路徑處(每個人的路徑可能不同),

紅色箭頭是下載地址 https://github.com/boot2docker/boot2docker/releases/tag/v18.03.0-ce ,

然後將下載到的文件放到指定地址後 等待運行(時間較長)

安裝好之後 運行 Docker Quickstart Terminal,

然後輸入 docker pull scrapinghub/splash

然後在輸入 docker run -p 8050:8050 scrapinghub/splash

這樣便開啟了 docker 。

然後就可以開始運用 python中的 scrapy-splash 中的 SplashRequest

3、設定python中的 setting文件

SPLASH_URL = ‘http://192.168.99.100:8050‘ #(很重要寫錯了會出目標電腦積極拒絕)

添加Splash中間件,指定優先級:

DOWNLOADER_MIDDLEWARES = {
‘scrapy_splash.SplashCookiesMiddleware‘: 723,
‘scrapy_splash.SplashMiddleware‘: 725,
‘scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware‘: 810,
}

設置Splash自己的去重過濾器 :
DUPEFILTER_CLASS = ‘scrapy_splash.SplashAwareDupeFilter‘


緩存後臺存儲介質:
HTTPCACHE_STORAGE = ‘scrapy_splash.SplashAwareFSCacheStorage‘ # 以上兩條必加

4、運用SplashRequest:

這個運用方面 有一個需要特別註意 就是:

yield SplashRequest(url=news_url, callback=self.down_load,args={"wait": 3})

上面是使用 splashrequest的一個例子,其中一定要添加args={"wait": 3} 這一個標識延遲多久以後再將網頁信息傳送過來。

Scrapy中的splash的安裝應用