3

我最近了解了 jSoup,并想更深入地研究它。但是,我遇到了使用 javascript 处理障碍物的网页(我还没有 js 知识:/)。

我已经读过htmlunit 将是执行 webbrowser 操作的正确工具,但我发现如果我可以找到使用 javascript 在网页中获得的 JSON 对象,我不需要 js 知识。

例如,这个页面:在源文件中,其中一个是tooltips.js。在这个文件中,生成变量rgNeededFeeds并在方法LoadHeropediaData()中调用,该方法是生成获取 json 对象的整个 URL 链接的方法。

URL = URL + 'jsfeed/heropediadata?feeds='+strFeeds+'&v=3633666222511362823&l=english';

我无法理解strFeeds到底是什么。我尝试了各种组合,但它不起作用(它返回一个空数组......)。或者,我的猜测完全错误?

我真正需要的是当您单击其中一个“项目”时它显示在顶部的数据。“悬停”中的信息也可以,但它缺少“recepi”信息。我假设通过从上面的完整 URL 获取 json 对象,基本上所有数据信息都应该在那个 json 中。

无论如何,这只是基于我盯着这些源文件几个小时所理解的。如果我错了,请纠正我。(顺便说一句,我在Java中)

**p/s:我也想借此机会向Balusc表示感谢,当我对jSoup有疑问时,他无处不在。:>*

4

1 回答 1

1

strFeeds只不过是这两个字符串之一:itemdataabilitydata

您可以tooltips.js在第 38-45 行找到它

var rgNeededFeeds = [];
$.each( [ 'item', 'ability' ], 
function( i, ttType ){
        icons = GetIconCollection( ttType );
        if ( icons.length ){
            rgNeededFeeds.push( ttType+'data' );
                 //..............
            }
     }
)    

ttType[ 'item', 'ability' ]是与字符串连接的数组的迭代值data被推入数组rgNeededFeeds

该函数LoadHeropediaData在上述函数的末尾以rgNeededFeedsas 参数调用:

LoadHeropediaData( rgNeededFeeds );

旁注:如果您开始抓取网站,学习 javascript 将是强制性的。

注意:你是对的,JSON 包含所有需要的信息......

于 2013-01-20T23:23:10.153 回答