java - 从链接中提取数据会更改检索时的语言

标签 java regex http proxy

所以我正尝试从此链接从 IMDB 中提取一些数据:

http://www.imdb.com/find?q=sleepers&s=all (看源码)

所以用这个正则表达式:

(?s:<td class=\"result_text\"> <a href=\"/title/.*?</td>)

然后是:

(?s:(?i:(?<=[>])Sleepers.*?(?=</td>)))

我可以提取所有包含单词 Sleepers 的匹配标题...这就是问题出现的地方:

因为我来自不同的国家,“Sleepers”的第一场比赛变成了“Los hijos de la calle”,如下所示:

<td class="result_text"> <a href="/title/tt0117665/?ref_=fn_al_tt_1" >Los hijos de la calle</a> (1996) <br/>aka <i>"Sleepers"</i> </td>

有没有一种方法可以强制使用 Java 建立 http 连接,以免发生这种情况???

我在使用 HTMLUnit 时没有遇到这个问题,但对于我正在做的事情来说它非常慢。

我正在使用代理,但如果我通过浏览器,页面(源代码)会以英文显示。

编辑:

通过 setRequestHeader() 设置所需的语言解决了问题:

conn = url.openConnection(proxy);
conn.setRequestProperty("Accept-Language", "en-US");

>> FOUND: <td class="result_text"> <a href="/title/tt0117665/?ref_=fn_al_tt_1" >Sleepers</a> (1996) </td>

谢谢!

最佳答案

我的第一个建议是在您的请求中添加一个 Accept-Language http header 。如果这不能解决问题,您可以尝试复制浏览器发送的任何 cookie。
如果您使用 chromium 或 chrome,请打开开发人员工具 (F12) 并转到网络选项卡以查看正在发送的 header 和 cookie。如果您使用 firebug,您也可以在 firefox 中获取该信息。

关于java - 从链接中提取数据会更改检索时的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18889444/

相关文章:

java - Observable#take(Long) 没有在 RxJava 中返回所需的项目大小

java - 在java中增加和减少一个变量直到达到一个数字

regex - 如何使用 Perl 正则表达式删除换行符?

java - 原始堆栈与通用堆栈<字符>

java - Worklight 服务器正在运行,但 html 页面不显示

java - 正则表达式不返回 .group() 值

python - 直接在反向引用之后的数值

http - 通过 HTTP 隧道

java - 如何使用post请求登录到电子邮件?

java - 记录放心流量