我正在 HtmlUnit 中寻找一种干净/简单的方式来从特定语言的服务器请求网页。
为此,我一直在尝试用西班牙语而不是英语为他们的主页请求“bankofamerica.com”。
这是我到目前为止所做的:
我试图在 Http 请求中将“Accept-Language”标头设置为“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>]
所以服务器被请求一个西班牙语页面,但作为响应它以英语发送主页(响应标头的 Content-Language 的值设置为 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 中是否有一种干净的方法来实现这一点。
(如果 cookie 确实是一种解决方案,那么要在 htmlunit 中创建它们,您需要指定域名。然后必须为 100 个站点中的每一个创建 cookie。据我所知,在 HtmlUnit 中没有办法做类似的事情:
Cookie langCookie = new Cookie("所有域","LANG_COOKIE","es_US"); myWebClient.getCookieManager().addCookie(langCookie);)
注意:我使用 HtmlUnit 2.12 并在 webclient 中设置 BrowserVersion.CHROME
谢谢。