这是我第一次用飞溅刮网站。我需要告诉spash点击一个按钮,以便其他元素加载到浏览器上。这是无限的。然后我希望飞溅返回超文本标记语言代码,这样我就可以用我的蜘蛛刮掉它。加载按钮没有href,所以我不能使用分页。因此,我试图写一个闪存脚本来做到这一点。但是当我用Splash运行脚本时,似乎“btn”部分在返回的超文本标记语言中没有任何作用(每次只返回第一页的超文本标记语言)。)
这是我写的Splash脚本:
function main(splash,args)
local function wait_for(it)
item=splash:select(it)
while not item:visible() do
splash:wait(0.25)
item=splash:select(it)
return item
end
end
splash.private_mode_enabled=false
local head={'User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome'}
assert(splash:go(args.url,headers=head))
selector='.undefined.btn.small-Font'
wait_for(selector):mouse_click()
selector='.rtl.custom-container.pb-5'
wait_for(selector):mouse_click()
return splash:html()
end
谁能帮助我理解我如何告诉splash“当“加载按钮”存在时,按下它,然后立即返回整个HTML”?
顺便说一句,这里是我想要抓取的非英语URL:http://namlik.me/channels
非常感谢你!!
---编辑---
这是我在响应页面上得到的错误:
{
"error": 400,
"type": "ScriptError",
"description": "Error happened while executing Lua script",
"info": {
"source": "[string \"function main(splash,args)\r...\"]",
"line_number": 14,
"error": "')' expected near '='",
"type": "LUA_INIT_ERROR",
"message": "[string \"function main(splash,args)\r...\"]:14: ')' expected near '='"
}
}
如果不存在,请稍等片刻,然后重试。您可以对容器执行相同的操作,而不是splash:wait(10)
。https://splash.readthedocs.io/en/stable/scripting-element-object.html#element-可见的
btn = splash :select(".undefined.btn.small-Font")
visible = btn :visible()
while not visible do
splash :wait( 0.25 )
btn = splash :select(".undefined.btn.small-Font")
visible = btn :visible()
end
btn :mouse_click()
等待程序可能是一个函数。
function main( splash, args )
local function wait_for( it )
item = splash :select( it )
while not item :visible() do
splash :wait( 0.25 )
item = splash :select( it )
end -- visible?
return item
end -- wait_for()
splash .private_mode_enabled = false
local head = { 'User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome' }
splash :set_user_agent( head )
assert( splash :go( args .url ) )
selector = '.undefined.btn.small-Font'
wait_for( selector ) :mouse_click()
selector = '.rtl.custom-container.pb-5'
wait_for( selector ) :mouse_click()
return splash :html()
end -- main()
问题内容: 我正在寻找一种在页面加载时自动“单击”项目的方法。 我尝试使用 但这似乎行不通吗?但是,当我进入Firebug的控制台并运行脚本时,它可以工作。 可以在加载时使用触发事件吗? 问题答案: 您尝试触发的点击处理程序很可能也通过附加了。可能发生的情况是您在附加处理程序之前触发了事件。解决方法是使用: 10ms的延迟将导致该函数在所有处理程序被调用后立即运行。
本文向大家介绍Android如何给按钮添加点击音效,包括了Android如何给按钮添加点击音效的使用技巧和注意事项,需要的朋友参考一下 有很多制作精良的APP都自带点击音效,那么如何简单的来实现这一效果,这里需要使用到的一个概念叫做SoundPool,这个类主要用于播放一些比较小的音频文件,因为比较方便,通常用在游戏里比较多。 代码 闲话不多说,我们现在需要做一个功能,就是点击某一按钮的时候同时播
我有一个内部web应用程序,它有一个模态对话框。不幸的是,我不能在这里发布实际的web应用程序位置,但是让我尽可能地描述一下。 当应用程序启动时,屏幕上会出现一个框,告诉您一堆文本。您可以按“下一页”以获取下一页文本 在最后一页上,“下一步”按钮被禁用,web应用程序的其余UI被启用 页面数量不定,所以我不知道我必须点击“下一步”多少次 我可以点击固定的次数(例如,如果我知道有两个页面,我可以点击
好的,伙计们。我正在尝试创建一个小费计算器,我遇到了一些问题。问题是当用户输入一个值时,程序会询问(禁用enter按钮)用户是否希望包含提示,因此用户选择是或否。如果选择了其中任何一个,前面的问题就消失了,文字出现“小费包括在内”或“小费不包括在内”。现在,如果用户想要编辑上面的值,按钮将再次被启用,但是如果它点击了一个,它将再次询问用户是否想要包含提示。所以我的问题是,我怎样才能使它使它,无论那
本文向大家介绍ios通过按钮点击异步加载图片,包括了ios通过按钮点击异步加载图片的使用技巧和注意事项,需要的朋友参考一下 比较原始的方法: 方法二: 方法三: 实现文件: 以上所述就是本文的全部内容 了,希望大家能够喜欢。
我是android编程新手,有没有一种方法可以使用View在android中加载或显示html文件表单资产文件夹。OnClickListener 让我重新表达我的问题:有没有可能写一个类似下面的代码来调用/加载/显示本地html文件表单资产文件夹时,按钮被点击 如果我不够清楚,一定要告诉我。。 非常感谢!!!!