使用jsoup解析JavaScript

使用jsoup解析JavaScript,java,javascript,html,jsoup,Java,Javascript,Html,Jsoup,在HTML页面中,我想选择javascript变量的值。下面是HTML页面的片段 <input id="hidval" value="" type="hidden"> <form method="post" style="padding: 0px;margin: 0px;" name="profile" autocomplete="off"> <input name="pqRjnA" id="pqRjnA" value="" type="hidden"> &

HTML
页面中,我想选择
javascript
变量的值。下面是
HTML
页面的片段

<input id="hidval" value="" type="hidden"> 
<form method="post" style="padding: 0px;margin: 0px;" name="profile" autocomplete="off">
<input name="pqRjnA" id="pqRjnA" value="" type="hidden">
<script type="text/javascript">
    key="pqRjnA";
</script>

key=“pqRjnA”;

我的目标是使用
jsoup
从本页读取变量
key
的值。是否可以使用
jsoup
?如果是,那么如何解决呢?

既然jsoup不是javascript库,您有两种方法来解决这个问题:

A.使用javascript库
  • Pro:

    key="pqRjnA"
    pqRjnA
    
    • 完全支持Javascript
  • Con:

    key="pqRjnA"
    pqRjnA
    
    • 附加/依赖项
B.使用Jsoup+手动解析
  • Pro:

    key="pqRjnA"
    pqRjnA
    
    • 不需要额外的库
    • 足够完成简单的任务了
  • Con:

    key="pqRjnA"
    pqRjnA
    
    • 不像javascript库那样灵活
下面是一个如何使用JSOUP和一些“手动”代码获取
键的示例:

输出(使用html部件):

key="pqRjnA"
pqRjnA

您必须获取脚本内容,然后手动解析,或者查看是否可以使用Rhino从已执行的JS片段中获取上下文。@Reimeus:不可以。可以在其他地方进行初始化,这里将一些值分配给变量
key
。是的。。。我已经在遵循第二个选项,即
使用Jsoup+手动解析
ThankxHey,
Jsoup+手动解析
是非常好的解决方案,但在使用js变量作为数组时中断<代码>例如:keyArray=[1,2,3]
你能给我一个解决方案吗?你可以用这个正则表达式来代替:
(?s)(keyArray)\\s???=\\s\\\\[(.*?\\\]
。如果定义了两个组:组1=变量名,组2=值(那些在
[]
中的组)。如果我有类似于
abc.xyz.init({requiredJsonObjectAsAnArgument})的东西会怎么样内部脚本标记,我只想解析requiredJsonObjectAsAnArgument。您能为我推荐适用于这种情况的正则表达式吗?请尝试
(?s)\\\.init\(\\{(+?)\\\\\\\\)-组#1包含
所需的JsonObjectAsanargument