導航:首頁 > 編程語言 > javahtmlunit

javahtmlunit

發布時間:2023-11-13 14:05:42

『壹』 java中如何點擊按鈕跳轉到網頁(在瀏覽器中打開)

Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI("URL地址"));

這個是用你默認的瀏覽器 打開指定超鏈

『貳』 如何用JAVA爬取AJAX載入後的頁面

普通的爬取是抓不了js的之後的數據的 可以用phantomjs或者htmlUnit實現
附上phantomjs示列代碼
package cn.wang.utils;

import java.util.Random;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.CookieManager;
import com.gargoylesoftware.htmlunit.;
import com.gargoylesoftware.htmlunit.WebClient;

public class htmlUnitUtils {

static WebClient webClient = null;

static Random random = new Random();

static{
//1.創建對象
webClient = new WebClient(BrowserVersion.CHROME);
//2.設置參數
//啟動js
webClient.getOptions().setJavaScriptEnabled(true);
//關閉css渲染
webClient.getOptions().setCssEnabled(false);
//啟動重定向
webClient.getOptions().setRedirectEnabled(true);
//設置連接超時時間 ,這里是10S。如果為0,則無限期等待
webClient.getOptions().setTimeout(1000 * 15);
//啟動cookie管理
webClient.setCookieManager(new CookieManager());
//啟動ajax代理
webClient.setAjaxController(new ());
//js運行時錯誤,是否拋出異常
webClient.getOptions().(false);
//設置瀏覽器請求信息
webClient.addRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
webClient.addRequestHeader("Accept-Encoding", "gzip, deflate");
webClient.addRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
webClient.addRequestHeader("Connection", "keep-alive");
webClient.addRequestHeader("Upgrade-Insecure-Requests", "1");
}

public static void runJs(String url){
try {
webClient.addRequestHeader("User-Agent", Constant.useragents[random.nextInt(Constant.useragents.length)]);
//等待js渲染執行 waitime等待時間(ms)
webClient.waitForBackgroundJavaScript(1000 * 10);
//3.獲取頁面
webClient.getPage(url);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(webClient != null){
webClient.close();
}
}
}

public static void main(String[] args) {
runJs("http://www.gou.hk/");
System.setProperty("phantomjs.binary.path", "D:\\works\\tool\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");

}
}

『叄』 如何用htmlunit向伺服器javascrtipt提交數據和得到運行結果

看了下你的網站,你的目的應該是測試按下搜索按鈕之後顯示的結果網頁裡面的內容是否符合預想吧,其實htmlunit本身相當於模擬了一個瀏覽器,所以你不需要分別執行那幾個javascript,只要用htmlunit的webclient用你的地址裝入網頁(這時候他會自動裝入需要的javascript並執行),然後用你會得到一個htmlpage對象,從裡面找到需要填值的input對象,設置參數,然後找到搜索按鈕,模擬點擊即可,然後webclient會像真正的瀏覽器一樣做submit,並更新他內部的網頁數據,之後你只要在更新過的htmlpage對象中尋找預想結果應該生成的網頁對象並判斷其值是否正確即可。
我沒有用過python版的htmlunit,我用的是java版,但用法應該類似,你也可以參考下面的這個網頁,當然他只做到了submit,之後的對結果的判斷做法是類似的,也可以用你上面寫的通過xpath到結果網頁裡面尋找的方法。
http://blog.csdn.net/xuweilinjijis/article/details/8984290

『肆』 Java htmlunit click 方法點擊沒反應怎麼回事

解決思路如下:
第三個tr點擊的時候其實是有反應的 是有向伺服器請求數據的 不過不知道為啥htmlunit沒有給我做修改頁面代碼的操作 不過既然有發request 那就會有response 既然有response response里就一定有我要的數據
首先先:
MainService.page = subGroup.getValue().click(); //模擬點擊 向伺服器發送請求 用一個HtmlPage對象接著
WebResponse res = MainService.page.getWebResponse(); //獲取最近請求的響應
String html = res.getContentAsString(); //將響應變為字元串

接下來變為字元串之後 就可以做想做的操作了 因為我只是要一個URL地址 所以 接下來我做了切割字元串的操作 得到我要的url
int endNum = html.indexOf(subGroup.getValue().asText()); //操作字元串 拿到url
String str = html.substring(0, endNum);
int beginNum = str.lastIndexOf(URL的特有起始欄位);
String str2 = html.substring(beginNum, endNum);
int buffer = str2.length()-str2.indexOf("\"");
String url = html.substring(beginNum, endNum-buffer);
因為網頁代碼的緣故 我有一些特別的操作 不過上面幾行代碼就是從response里獲得url的過程 這個過程要根據網頁的不同具體分析的

接下來只要將得到的url送給getPage方法就能得到正常的頁面了
MainService.page = wc.getPage(url);

閱讀全文

與javahtmlunit相關的資料

熱點內容
為什麼碳數增加密度減小 瀏覽:416
少兒計算機編程培訓無聊嗎 瀏覽:589
安卓界面更新時點擊卡頓如何解決 瀏覽:773
日本十大漫畫app哪個好用 瀏覽:876
做系統選擇哪個文件夾 瀏覽:285
如何登陸mc伺服器 瀏覽:801
華為無法定位伺服器地址 瀏覽:963
編譯原理第三版陳火旺課本圖片 瀏覽:566
cad用什麼解壓縮軟體 瀏覽:715
編譯的函數模版 瀏覽:359
加密貨幣利率改變 瀏覽:228
復雜網路案例python 瀏覽:298
死命令的意思 瀏覽:689
哪個app可以聽日語電台 瀏覽:105
谷輪壓縮機15hp 瀏覽:289
python任意整數冒泡降序 瀏覽:30
醫保卡的錢哪個app能看到 瀏覽:578
主伺服器崩潰如何進行域遷移 瀏覽:319
學安卓用什麼語言好 瀏覽:80
qt命令行 瀏覽:800