【问题标题】:How to read the source code of a website with java如何用java读取网站的源代码
【发布时间】:2012-12-20 09:21:30
【问题描述】:

我正在尝试用 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 的方法

【问题讨论】:

  • 这就是为什么通过 javascript 提供大多数内容对 SEO、可访问性等不利的原因。

标签: java web-crawler


【解决方案1】:

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

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

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

【讨论】:

  • 其实它是一个 WebKit 引擎,和你在 Chrome 中可以找到的引擎是一样的。它“几乎”是一个浏览器 ;-)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多