在检索时从链接更改语言中提取数据

时间:2013-09-19 08:13:34

标签: 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的匹配标题......这就是出现问题的地方:

因为我来自不同的国家,“睡眠者”的第一场比赛改为“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>

谢谢!

1 个答案:

答案 0 :(得分:1)

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