splash對(duì)象的屬性和方法

入口及返回值

function main (splash,args)
  splash:go("http://www.baidu.com")
  splash:wait(0.5)
  local title = splash:evaljs("document.title")
  return {title=title}
end

Splash支持異步處理激挪,不顯示指明回調(diào)方法,回調(diào)的跳轉(zhuǎn)在Splash內(nèi)部完成嗡综,wait()相當(dāng)于sleep(),png()返回截圖

function main(splash, args)
  local example_urls = {"www.baidu.com","www.taobao.com","www.zhihu.com"}
  local urls = args.urls or example_urls
  local results = {}
  for index,url in ipairs(urls) do
    local ok,reason = splash:go("http://"..url)
    if ok then
      splash:wait(2)
      results[url] = splash:png()
    end
  end
  return results
end

Splash對(duì)象屬性
mai()方法的第一個(gè)參數(shù):splash對(duì)象(它的屬性和方法控制加載過程)
args:獲取加載時(shí)配置的參數(shù),如URL,GET請(qǐng)求:可獲取GET請(qǐng)求參數(shù)碎节,POST請(qǐng)求:獲取表單提交的數(shù)據(jù)

function main(splash, args)
    local url = args.url
  return url
end

與下面等價(jià)

function main(splash)
    local url = splash.args.url
  return url
end

js_enabled:JavaScript執(zhí)行開關(guān),默認(rèn)為true
resource_timeout:設(shè)置加載的超時(shí)時(shí)間(秒)抵卫,0/nil表示不檢測超時(shí)
image_enabled:設(shè)置圖片是否加載狮荔,默認(rèn)true加載,禁用會(huì)影響JavaScript的渲染(影響DOM節(jié)點(diǎn)的位置)介粘,Splash使用緩存殖氏,一開始加載圖片,后面禁用仍會(huì)出現(xiàn)圖片姻采,重啟Splash即可
plugins_enabled:瀏覽器插件是否開啟雅采,默認(rèn)false
scroll_position:控制頁面上下/左右滾動(dòng)

function main(splash, args)
    splash:go(args.url)
  splash.scroll_position = {x=100,y=400}
  return {png=splash:png()}
end

go():請(qǐng)求某個(gè)鏈接,可傳入請(qǐng)求頭慨亲、表單等數(shù)據(jù)
jsfunc():直接調(diào)用JavaScript定義的方法婚瓜,該方法使用雙中括號(hào)括起

function main(splash, args)
    local get_div_count = splash:jsfunc([[
    function(){
        var body = document.body;
        var divs = body.getElementsByTagName('div');
        return divs.length;
  }
    ]])
  splash:go(args.url)
  return ("There are %s divs"):format(get_div_count())
end

evaljs():執(zhí)行JavaScript代碼后返回最后一條JavaScript語句返回的結(jié)果

result = splash:evaljs(js)

runjs():聲明JavaScript定義的語句塊,通過evaljs()調(diào)用

function main(splash, args)
  splash:go(args.url)
  splash:runjs("foo = function(){return 'hello'}")
  local result = splash:evaljs("foo()")
  return result
end

autoload():設(shè)置每個(gè)頁面訪問時(shí)自動(dòng)加載的對(duì)象刑棵,可以是JavaScript代碼或庫巴刻,但是不執(zhí)行操作,執(zhí)行調(diào)用evaljs()

ok,reason = splash:autoload{source_or_url}

call_later():設(shè)置定時(shí)任務(wù)和延時(shí)執(zhí)行,如下在go訪問后使用wait(3.0)等待3秒才返回所有截圖蛉签,期間設(shè)置0.2秒獲取截圖胡陪,中間等待1秒沥寥,1.2秒的時(shí)候再次獲取截圖,最后3秒后返回所有截圖

function main(splash, args)
  local snapshots = {}
  local timer = splash:call_later(function()
    snapshots["a"]=splash:png()
    splash:wait(1)
    snapshots["b"]=splash:png()
  end,0.2)
  splash:go(args.url)
  splash:wait(3.0)
  return snapshots
end

http_get():模擬發(fā)送http的get請(qǐng)求
response = splash:http_get(url,headers=nil,follow_redirects=true)
follow_redirects表示是否啟動(dòng)自動(dòng)重定向柠座,默認(rèn)true
請(qǐng)求的地址:http://httpbin.org/get

function main(splash, args)
  local treat = require("treat")
  local response = splash:http_get(args.url)
  return {
    html = treat.as_string(response.body),
    url = response.url,
    status = response.status
  }
end

http_post:發(fā)送post請(qǐng)求邑雅,需要body參數(shù)
請(qǐng)求的地址:http://httpbin.org/post

function main(splash, args)
  local treat = require("treat")
  local json = require("json")
  local response = splash:http_post{args.url,
    body=json.encode({name="aha"}),
    headers={["content-type"]="application/json"}
  }
  return {
    html = treat.as_string(response.body),
    url = response.url,
    status = response.status
  }
end

set_content():設(shè)置頁面內(nèi)容
html():返回獲取的頁面源碼信息

result = splash:html()

png():返回PNG格式的截圖
jpeg():返回JPEG格式的截圖

png = splash:png()
jpeg = splash:jpeg()

har():獲取頁面加載過程描述
url():獲取當(dāng)前URL
get_cookies():獲取當(dāng)前訪問鏈接的cookies
add_cookies():添加cookies
clear_cookies():清除cookies
get_viewport_size():獲取當(dāng)前瀏覽器的大小
set_viewport_size():設(shè)置當(dāng)前瀏覽器的大小
set_viewport_full():設(shè)置瀏覽器全屏顯示
set_user_agent():設(shè)置瀏覽器的user_agent
set_custom_headers():設(shè)置請(qǐng)求頭信息
select():返回選中符合條件的第一個(gè)節(jié)點(diǎn),參數(shù)是CSS選擇器
select_all():返回選中符合條件的所有節(jié)點(diǎn)妈经,參數(shù)是CSS選擇器
mouse_click():模擬鼠標(biāo)點(diǎn)擊事件
參考鏈接:
1蒂阱、http://splash.readthedocs.io/en/stable/scripting-ref.html#attributes
2、http://splash.readthedocs.io/en/stable/scripting-overview.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狂塘,一起剝皮案震驚了整個(gè)濱河市录煤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荞胡,老刑警劉巖妈踊,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泪漂,居然都是意外死亡廊营,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門萝勤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來露筒,“玉大人,你說我怎么就攤上這事敌卓∩魇剑” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵趟径,是天一觀的道長瘪吏。 經(jīng)常有香客問我,道長蜗巧,這世上最難降的妖魔是什么掌眠? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮幕屹,結(jié)果婚禮上蓝丙,老公的妹妹穿的比我還像新娘。我一直安慰自己望拖,他們只是感情好渺尘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著靠娱,像睡著了一般沧烈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上像云,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天锌雀,我揣著相機(jī)與錄音蚂夕,去河邊找鬼。 笑死腋逆,一個(gè)胖子當(dāng)著我的面吹牛婿牍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惩歉,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼等脂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撑蚌?” 一聲冷哼從身側(cè)響起上遥,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎争涌,沒想到半個(gè)月后粉楚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亮垫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年模软,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饮潦。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡燃异,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出继蜡,到底是詐尸還是另有隱情回俐,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布壹瘟,位于F島的核電站鲫剿,受9級(jí)特大地震影響鳄逾,放射性物質(zhì)發(fā)生泄漏稻轨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一雕凹、第九天 我趴在偏房一處隱蔽的房頂上張望殴俱。 院中可真熱鬧,春花似錦枚抵、人聲如沸线欲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽李丰。三九已至,卻和暖如春逼泣,著一層夾襖步出監(jiān)牢的瞬間趴泌,已是汗流浹背舟舒。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗜憔,地道東北人秃励。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像吉捶,于是被迫代替她去往敵國和親夺鲜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容