【发布时间】:2011-03-04 19:14:53
【问题描述】:
我想开发一个应用程序,它会自动(基于某些逻辑)抓取网页。自动点击并在页面上发布以测试它们。把它想象成Selenium。
对于简单的网页,这可以很容易地完成,我删除 HTML 代码,然后向服务器发出新的请求以获取下一页。问题是处理 Ajax 页面。 如何处理 HTML 中的 JS 代码?
把它分解,不同的部分会出现问题。 JS 引擎必须:-
- 解析 HTML 代码并发出服务器请求以获取引用的外部 JS 文件。可以提供一个钩子让用户代码为引擎获取它。
- 创建一个 HTML 元素的 DOM 树,就像在浏览器中所做的那样,让用户代码访问和操作它们。
- 让用户代码挂钩到 JS 事件。
典型的 JS 代码执行以下任务:-
- 访问 DOM 元素。
-
操作现有的 DOM 元素。
a.这可以是装饰性的(比如改变高度等)用户代码对此不感兴趣,这将非常困难,因为它需要一个布局引擎。
b.这可以是对属性的操作。用户代码会对此感兴趣。
添加新的 DOM 元素。
- 为 Ajax 发出 Http 请求。
你能给我任何我可以用来实现所有这些的嵌入式 JS 引擎吗?我选择的语言是 Java,但 C/C++ 或 Python 也可以。我不确定,但Mozilla Rhino 是否符合上述要求?
【问题讨论】:
-
如果我把它想象成 Selenium,我还不如直接使用 Selenium...
-
也许吧。如果 Selenium 在我入伍时可以控制 JS,那么我的下一个问题会做到吗?
标签: java javascript embedding