我正在尋找一種乾淨/簡單的方式在HtmlUnit中以特定語言從服務器請求網頁。HtmlUnit:從特定語言的服務器請求網站
要做到這一點,我一直在試圖申請「bankofamerica.com」的西班牙語而不是英文的主頁。
這是我迄今所做的:
我試圖設置「接受語言」在HTTP請求頭「ES」。我這樣做使用:
myWebClient.addRequestHeader("Accept-Language" , "es");
它沒有工作。然後,我創建了下面的代碼Web請求:
URL myUrl = new URL("https://www.bankofamerica.com/");
WebRequest myRequest = new WebRequest(myUrl);
myRequest.setAdditionalHeader("Accept-Language", "es");
HtmlPage aPage = myWebClient.getPage(myRequest);
由於這失敗過我打印出來的申請對象爲這個URL,以檢查是否正在建立這些頭。
[<url="https://www.bankofamerica.com/", GET, EncodingType[name=application/x-www-form-urlencoded], [], {Accept-Language=es, Accept-Encoding=gzip, deflate, Accept=*/*}, null>]
所以被請求的服務器是爲西班牙頁面,但在響應其發送的英文網頁(響應報頭包含內容語言設置爲en-US的值)
我沒找到黑客檢索西班牙語的BOA頁面。我訪問了此頁面,並使用Chrome開發人員工具從請求 標頭中獲取cookie值。我用這個值來做以下事情:
myRequest.setAdditionalHeader("Cookie", "TLTSID= ........._LOCALE_COOKIE=es-US; CONTEXT=es_US; INTL_LANG=es_US; LANG_COOKIE=es_US; hp_pf_anon=anon=((ct=+||st=+||fn=+||zc=+||lang=es_US));..........1870903; throttle_value=43");
我猜測答案在這裏的某處。
這裏是我的下一個問題。如果我正在編寫一個腳本來檢索100個不同的西班牙語網站(即假設他們都有西班牙語的網頁)。在HtmlUnit中是否有一個乾淨的方式來完成這個任務。
(如果cookies確實是一個解決方案,然後在htmlunit中創建它們,您需要指定域名,然後必須爲100個站點中的每個站點創建cookie,據我所知沒有辦法要的HtmlUnit做這樣的事情:
曲奇langCookie =新的Cookie( 「全域」, 「LANG_COOKIE」, 「es_US」); myWebClient.getCookieManager()的addCookie(langCookie);)
注意:我使用HtmlUnit 2.12並在webclient中設置BrowserVersion.CHROME
謝謝。