2

我正在尝试用 Java 编写一个网络爬虫,到目前为止,尽管我在使用 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 的方法

4

2 回答 2

2

一般来说,网络爬虫会看到没有处理 javascript 的网站。Web 开发人员知道这一点,所以“好”的网站可以在没有 JS 的情况下成功阅读

如果你真的很想实际处理 JS,(尽管如果你不这样做,你的生活会轻松很多),你可以使用这个工具: http: //phantomjs.org/

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

于 2012-12-20T09:28:06.347 回答
0

如果你想用 Java 来做,看看可以处理 javascript的htmlunit ,或者可以帮助你驱动真正的浏览器的selenium

于 2012-12-20T09:40:25.800 回答