如何用java阅读网站的源代码

时间:2012-12-20 09:21:31

标签: java web-crawler

我正在尝试用Java编写一个Web爬虫,到目前为止,它主要用于使用JavaScript或PHP动态获取内容的网站存在问题,例如,如果我尝试抓取tumblr博客而不是获取整个源代码与链接和一切我只获得CSS和标题信息,这是因为所有的帖子信息都是由JavaScript收集的。

用于从网页获取源代码的代码是......

public static String openURL( String url )
{
    String source = null;                                                                           
    String temp = "";                                                                       
    BufferedInputStream bis;                                                                        
    try
    {
        URL my_url = new URL(url);                                                          

        HttpURLConnection urlConnection = (HttpURLConnection) my_url.openConnection();
        urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0");
        InputStream is = urlConnection.getInputStream();

        bis = new BufferedInputStream(is);                  

        byte[] buffer = new byte[1024];
        int bytesread = 0;
        source = "";

        bytesread = bis.read(buffer);

        while( bytesread != -1 )
        {
            source += new String(buffer, 0, bytesread);
            bytesread = bis.read(buffer);
        }
    }
    catch (Exception ex ){}
    System.out.println(source);
    return source;                                                                              
}

有没有人如何改变这一点,以便获得动态内容,任何帮助将不胜感激

干杯丹尼尔

编辑:对不起家伙,虽然你的答案很有帮助,但这个项目更具教育性,所以我试图找到一种方法来完成第三方API的使用

2 个答案:

答案 0 :(得分:2)

网页抓取工具通常会看到没有处理过javascript的网站。 Web开发人员知道这一点,因此可以在没有JS的情况下成功读取“好”的网站

如果你真的真的想要真正处理JS,(如果你没有,你的生活会变得容易多了),你可以使用这个工具:http://phantomjs.org/

我实际上并没有使用它,但它允许你在不使用浏览器的情况下处理JS ..

答案 1 :(得分:0)

如果你想用Java做,可以看一下可以处理javascript的htmlunit,或者selenium可以帮助你开一个真正的浏览器