2011-03-04 56 views
0

我想開發一個應用程序,它會自動(基於某種邏輯)抓取網頁。自動點擊並張貼在頁面上進行測試。把它想象成Selenium你能推薦任何可嵌入的Javascript引擎嗎?

對於簡單的網頁,這可以很容易地完成我的廢除HTML代碼,然後提出一個新的請求到服務器的下一頁。問題在於處理Ajax頁面。 如何處理HTML中的JS代碼?

要分解它,問題的不同部分將會是。 JS引擎必須: -

  1. 解析HTML代碼,使服務器請求獲取外部簡稱JS文件。可能會提供一個鉤子讓用戶代碼爲引擎獲取它。
  2. 在瀏覽器中創建HTML元素的DOM樹,並讓用戶代碼訪問並操作它們。
  3. 讓用戶代碼掛鉤到JS事件。

一個典型的JS代碼執行以下任務: -

  1. 訪問DOM元素。
  2. 操作現有DOM元素。

    a.This可以是化妝品(如更改高度等)用戶代碼沒有興趣,這將是非常困難的,因爲它需要一個佈局引擎。

    b。這可以是屬性的操縱。用戶代碼會對此感興趣。

  3. 添加新的DOM元素。

  4. 爲Ajax發出Http請求。

你可以給我任何可嵌入的JS引擎,我可以用來實現所有這些?我選擇的語言是Java,但是C/C++或Python可以。我不確定,但Mozilla Rhino是否符合上述法案?

+0

如果我要把它想像爲硒,我不妨使用硒... – 2011-03-04 19:18:50

+0

也許吧。如果Selenium在我入伍的時候控制了JS,那麼我的下一個問題是否會做到這一點? – AppleGrew 2011-03-04 19:25:18

回答

3

看看HtmlUnit

+0

發現更多:在Python中 - (1)http://wiki.python.org/moin/WebBrowserProgramming(部分:圍繞Web「庫」和瀏覽器技術的Python包裝)(2)http://berkelium.org/。將需要找出哪一個足夠成熟。 HtmlUnit有多好? – AppleGrew 2011-03-05 02:50:45

+0

HtmlUnit非常成熟。我個人已經完成了幾個項目,並取得了很好的成績。 – 2011-03-05 13:31:06

0

我們使用Cobra項目進行了一些我們正在做的工作,我們需要檢索網頁並在其中執行javascript。不知道你是否可以根據你的需求調整項目。

+0

看起來,眼鏡蛇在渲染上很原始。 – AppleGrew 2011-03-06 04:13:57