我最近了解了jSoup,并希望更多地了解它。但是,我遇到了使用javascript处理网页的障碍物(我对js一无所知,但是:/)。
我有read htmlunit将是执行webbrowser操作的正确工具,但我发现如果我能找到使用javascript在网页中获得的JSON对象,我将不需要js知识。
例如,this page: 在源文件中,其中一个是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有疑问时,他到处都是。产品:> *
答案 0 :(得分:1)
strFeeds
只是这两个字符串中的一个:itemdata
或abilitydata
您可以在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
在上面函数的末尾调用,rgNeededFeeds
作为参数:
LoadHeropediaData( rgNeededFeeds );
除了注意:如果你开始抓取网站,学习javascript将是强制性的。
注意:你是对的,JSON包含了所需的所有信息......