Splash 渲染引擎简介
Splash文檔地址:http://splash.readthedocs.io/en/latest/api.html
Splash渲染引擎有以下功能
1.為用戶返回經(jīng)過渲染的HTML頁面或頁面截圖
2.并發(fā)渲染多個頁面
3.關(guān)閉圖片加載,加速渲染
4.在頁面中執(zhí)行用戶自定義的JS腳本代碼
5.執(zhí)行用戶自定義的渲染腳本(lua)
Splash有多個服務(wù)端點
1.render.html端點
| url | 需要渲染頁面的url |
| timeout | 渲染頁面超時時間 |
| proxy | 代理服務(wù)器地址 |
| wait | 等待頁面渲染的時間 |
| image | 是否下載圖片,默認(rèn)為1 |
| js_sourse | 用戶自定義的JS代碼,在渲染頁面前執(zhí)行 |
示例代碼
import requests from scrapy.selector import Selector splash_url='http://localhost: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').extract() print(sel)2.execute端點
再爬取頁面的時候,可能需要和頁面進(jìn)行交互,比如下拉等操作,這個時候就可以用execute端點來執(zhí)行一些用戶自定義的js代碼
| lua_source | 用戶自定義的lua腳本 |
| timeout | 渲染頁面超時時間 |
| proxy | 代理服務(wù)器地址 |
我們可以將execute端點的服務(wù)看作一個可用lua編程的瀏覽器。使用時需要傳遞一個用戶自定義的lua腳本給Splash,該lua腳本包含想要模擬的瀏覽器行為,例如
*打開某個頁面
*等待頁面加載渲染
*執(zhí)行JS代碼
*獲取HTTP響應(yīng)頭部
*獲取cookie
示例代碼
import requests lua_script=" function main()splash:go('http://example.com') #打開頁面splash:wait(0.5) #等待加載local title=splash:evaljs('document.title') #執(zhí)行js代碼獲取結(jié)果return {title=title} #返回json形式的結(jié)果 " splash_url='http://localhost:8050/execute' headers={'content-type':'application/json'} data=json.dumps({'lua_source':lua_script}) response=requests.get(splash_url,headers=heaers,data=data) print(response.content)splash對象常用的屬性和方法
1.splash.args屬性:用戶傳入?yún)?shù)的表,可以訪問用戶傳入的參數(shù),如splash.args.wait
2.splash.js_enabled屬性:用于開啟/禁止JS渲染,默認(rèn)為開啟
3.splash.images_enabled屬性:開啟/關(guān)閉圖片加載,默認(rèn)為開啟
4.splash:go方法:例如splash:go{url,baseurl=nil,headers=nil,http_method=‘GET’,body=nil,formdata=nil}
5.splash:wait方法:等待頁面渲染
6.splash:evaljs方法:執(zhí)行一段js代碼,并返回最后一句表達(dá)式的值
7.splash:runjs:運(yùn)行JS代碼,不返回值
8.splash:url
9.splash:html
10.splash:get——cookies():獲取cookie信息
轉(zhuǎn)載于:https://www.cnblogs.com/yfc0818/p/11072686.html
總結(jié)
以上是生活随笔為你收集整理的Splash 渲染引擎简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中石化限量版冬奥卡有什么用
- 下一篇: 新橙优品审核多久