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

标签 java javascript html jsoup

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

我有read htmlunit 将是执行网络浏览器操作的正确工具,但我发现如果我可以使用 javascript 找出在网页中获得的 JSON 对象,那么我不需要 js 知识。

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

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

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

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

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

**p/s:也想借此机会感谢Balusc,在我对jSoup有疑惑的时候,他无处不在。 :>*

最佳答案

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 包含所有需要的信息...

关于java - 通过深入研究 js 源代码来解决 HTML 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428836/

相关文章:

java - android 按钮可以执行另一个按钮然后执行它自己的代码吗?

javascript - 有人可以用外行人的术语向我解释这个foldl 示例吗?

javascript - 如何获取jquery中触发事件的对象?

html - SEO:隐藏标题是否合适(因为 HTML5 概述)

java - 如何使用 id sqlite 获取一行?

java - Java 中的随机 int 函数行为

javascript - EmberJS + EmberCLI 单元测试辅助函数未定义

javascript - 文本框的增量控件

html - 选择多个表单

java - 如何在聚合器 POM 中指定 Maven 属性?