如何在lua代码中选择查询选择器的escape splash
2019-11-13 7:46:40
收藏:0
阅读:93
评论:1
我找不到正确的方法来转义 splash:select 中的点
我有一个 scrapy 中的 splash 请求,它使用 lua 等待特定元素。该元素是带有点的 id。我似乎无法正确转义各个句点。我尝试了单个和双个反斜杠 (\ 和 \\)。如下所示:
lua_script = '''
function main(splash)
splash:set_user_agent(splash.args.ua)
assert(splash:go(splash.args.url))
while not splash:select('div#some.id.here') do
splash:wait(0.1)
end
return {html=splash:html()}
end
'''
期望的结果是所请求页面的完整加载的 html
实际结果为:
WARNING: Bad request to Splash: {'description': 'Error happened while executing Lua script', 'error': 400, 'type': 'ScriptError', 'info': {'error': "invalid escape sequence near '\\.'", 'source': '[string "..."]', 'message': '[string "..."]:5: invalid escape sequence near \'\\.\'', 'line_number': 5, 'type': 'LUA_INIT_ERROR'}}
当使用 \ 或 \\ 时
如果我尝试转义 splash:select 句柄内的字符串,如下所示:
splash:select(\'div#some.id.here\')
则代码会持续运行(我认为这是朝着正确的方向迈出的一步,但我认为在这个阶段,代码运行正确,但它试图寻找具有多个类的 div,而不是包含句点的 div)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你有一个包含 Lua 代码的 Python 字符串。
'splash:select(\'div#some.id.here\')'你的
splash需要你转义.因此,我们需要添加一个反斜杠。
为了避免在 Lua 中出现无效的转义序列
\.错误,我们必须通过添加另一个反斜杠来转义反斜杠。\\.由于我们仍然处于 Python 字符串中,因此我们必须再次转义这两个反斜杠。总共需要四个反斜杠。
'splash:select(\'div#some\\\\.id\\\\.here\')'Python
'\\\\.'会被 Lua 解释为'\\.',最终在splash:select调用中变成了'\.'我希望这样有意义。我无法测试。