以特定语言获取imdb电影标题

时间:2014-01-03 22:18:12

标签: java web-crawler regional-settings

我在java中编写一个爬虫程序,用于检查IMDB电影页面并提取一些信息,如名称,年份等。用户写入(或复制/粘贴)tittle和我的程序的链接应该完成其余的工作。

在检查几个(imdb)页面的html源代码并浏览抓取工具的工作方式后,我设法编写代码。

我得到的信息(例如标题)是用我的母语。如果我的母语没有信息,我会得到原始标题。我想要的是用我选择的特定语言来获得标题。

我对此很新,所以如果我错了就纠正我,但我用母语得到了结果,因为imdb“看到”我来自塞尔维亚而不是为我定制结果。所以基本上我需要告诉它我更喜欢英语结果?这是可能的(我想是这样),我该怎么做?

编辑: 程序抓取如下:它获取String中的url路径,将其转换为url,使用bufferedreader读取所有源并检查它获取的内容。我不确定这是否是正确的方法,但它正在工作(减去语言问题) 代码:

public static Info crawlUrl(String urlPath) throws IOException{
        Info info = new Info();

        //
        URL url = new URL(urlPath);
        URLConnection uc = url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                uc.getInputStream(), "UTF-8"));
        String inputLine;
        while ((inputLine = in.readLine()) != null){
            if(inputLine.contains("<title>")) System.out.println(inputLine);
        }
        in.close();
        //
        return info;
    }

此代码通过一个页面并在控制台上打印主标题。

2 个答案:

答案 0 :(得分:2)

尝试查看抓取工具使用的请求标头,我的包含Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,因此我获得了法语标题。

编辑:

我在Google Chrome上使用ModifyHeaders插件进行了检查,值en-US让我获得了电影的英文标题=)

答案 1 :(得分:2)

您无需抓取IMDB,您可以使用他们提供的转储:http://www.imdb.com/interfaces

还有一个解析器可以提供他们提供的数据:https://code.google.com/p/imdbdumpimport/它并不完美,但它可能对你有所帮助(你可以期待花一些力气使它工作)。

另一种解析器:https://github.com/dedeler/imdb-data-parser

编辑您说您想要为了学习目的而抓取IMDB。因此,您可能必须按照其他答案中的建议使用http://en.wikipedia.org/wiki/Content_negotiation

uc.setRequestProperty("Accept-Language", "de; q=1.0, en; q=0.5");