通过深入研究js源代码来解决HTML问题的解决方法

时间:2013-01-20 20:19:28

标签: java javascript html jsoup

我最近了解了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有疑问时,他到处都是。产品:> *

1 个答案:

答案 0 :(得分: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在上面函数的末尾调用,rgNeededFeeds作为参数:

LoadHeropediaData( rgNeededFeeds );

除了注意:如果你开始抓取网站,学习javascript将是强制性的。

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