程序员

flash中lua语法的使用

2018-11-05  本文已影响0人  豌豆_e34f

lua语法的使用

如果返回的是字典形式的数据可以用lxml解析

在创建的爬虫文件中

import scrapy,os
from ..items import Hero
from scrapy_splash import SplashRequest

SplashRequest(专门用来生成给予Splash加载的网络请求)

语法解释

定义一段lua脚本控制页面行为

set_viewport_size(w, h):用来设置浏览器的尺寸,w代表宽度,h代表高度

go(url, baseurl, headers, http_method, body, formdata):完成指定页面的加载

url:需要加载的页面的网址

baseurl:可选参数,默认为空,表示资源加载的相对路径

headers:可选参数,默认为空,用来设置请求的header

body:可选参数,默认为空,发送POST请求时间服务器传输的参数数据

formdata:可选参数,默认为空,POST的时候对应的表单数据,默认使用form表单默认的编码格式即application/x-www-form-urlencode

wait():用来等待网页的加载,对应的时间以秒为单位

time:等待网页加载的时间

cancle_on_redirect:可选参数,默认为false,用来设置当网页发生重定向时是否结束等待

cancle_on_error:可选参数,默认为false,用来设置当网页发生错误时是否结束等待

html():将加载之后的网站以html格式返回

jpeg():将加载之后的网站截屏并且以jpg格式返回

jsfunc():将自定义的JavaScript方法转化成lua方法,但是自定义方法必须包含在[[]]中

autoload():完成第三方资源远程链接加载

script1 = """
    function main(splash, args)
        splash:set_viewport_size(1200, 2500)
        splash.images_enabled = false
        splash:autoload('https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js')
        splash:go(args.url)
        splash:wait(args.wait)
        click_fun = splash:jsfunc([[
            function(){
                 $('label[data-id="Tank"]').click();   
            }
        ]])
        click_fun()
        splash:wait(args.wait)
        return splash:png()
    end
"""
def start_requests(self):
    for url in self.start_urls:
        # endpoint:设置splash渲染的方式,默认是render,html:即直接返回js渲染之后的网页,如果页面需要进行额外的js操作时,此时需要使用execute,execute可以保证js和lua脚本实现无缝融合
        #args:用来设置未来向lua脚本中传递的参数,默认有一个url,该url在未设置时指向发送请求的url,wait:页面加载过程中等待的时间,单位为秒
        yield SplashRequest(url=url, callback=self.parse, endpoint='execute', args={'lua_source': script1,'wait':3})
上一篇 下一篇

猜你喜欢

热点阅读