使用 scrapy+ splash 爬取動(dòng)態(tài)頁(yè)面缕允。
1.splash的安裝
①splash的安裝可參考這篇文章:http://www.reibang.com/p/4052926bc12c
②由于是Win7系統(tǒng),安裝Docker ToolBox袖肥。
③安裝完成后火欧,以管理員身份運(yùn)行“Docker Quickstart Terminal”棋电。
④下載并安裝secureCRT:在連接對(duì)話框輸入docker的地址:默認(rèn)是192.168.99.100,上面的圖里看得見(jiàn):)苇侵,用戶名:docker赶盔,密碼:tcuser。
⑤在Docker中安裝splash服務(wù):
sudo docker pull scrapinghub/splash
⑥啟動(dòng)splash服務(wù)(通常一般使用http模式 榆浓,可以只啟動(dòng)一個(gè)8050端口)
sudo docker run -p 8050:8050 -p 8051:8051 scrapinghub/splash
#Splash 將運(yùn)行在 0.0.0.0 at ports 8050 (http), 8051 (https) and 5023 (telnet)于未。
sudo docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash
⑦服務(wù)啟動(dòng)后,打開(kāi)瀏覽器輸入192.168.99.100:8050查看服務(wù)啟動(dòng)情況。輸入[www.baidu.com],點(diǎn)擊Render me 按鈕烘浦,立馬可以看見(jiàn)在服務(wù)器端渲染后的百度頁(yè)面抖坪。
image.png
2.splash與python的搭配使用
import requests
from scrapy.selector import Selector
##注意使用了192.168.99.100來(lái)替代localhost,因?yàn)閘ocalhost在win7中默認(rèn)為172.0.0.1.
splash_url ="http://192.168.99.100:8050/render.html"
args= {'url':'http://quotes.toscrape.com/js','timeout':5,'image':0}
response = requests.get(splash_url,params=args)
sel = Selector(response)
sel.css('div.quote span.text::text').extract()
使用上述代碼即可獲取JS加載的信息闷叉,結(jié)果為:
splash最常用的兩個(gè)端點(diǎn):
- render.html: 提供JavaScript頁(yè)面渲染服務(wù)擦俐。
- execute: 執(zhí)行用戶自定義的腳本(lua),利用該端點(diǎn)可在頁(yè)面中執(zhí)行JavaScript代碼握侧。