能否使用chromote包引入JavaScript库?
Chromote 实现类似 PhantomJS
page.inject() 的功能 可以实现,Chromote 依托 Chrome DevTools Protocol(CDP)提供了等价能力,只是没有和 PhantomJS 完全一致的inject方法名,具体有两种常用实现方式:
注入本地/远程脚本文件
使用DOM$addScriptTag方法,既可以加载远程脚本URL,也可以读取本地脚本内容后注入:library(chromote) # 初始化Chromote和页面 chrome <- Chromote$new() page <- chrome$new_page() # 注入本地JS库文件 local_script <- readLines("thelibrary.js", warn = FALSE) |> paste(collapse = "\n") page$DOM$addScriptTag(content = local_script) # 注入远程JS库(示例:jQuery) page$DOM$addScriptTag(url = "https://code.jquery.com/jquery-3.6.0.min.js")直接执行脚本内容
读取本地脚本内容后,通过Runtime$evaluate方法执行脚本,达到加载库的效果:script_content <- readLines("thelibrary.js", warn = FALSE) |> paste(collapse = "\n") page$Runtime$evaluate(expression = script_content)
这两种方式都能实现和 PhantomJS page.inject() 相同的功能,本质都是将目标JS库加载到当前页面的执行环境中。
内容的提问来源于stack exchange,提问作者Stéphane Laurent
相关产品推荐
相关产品推荐

