Java—下载网页的最佳方式';s源html
我在写一个小爬虫。下载网页源html的最佳方式是什么?我目前正在使用下面的一小段代码,但有时结果只是页面源代码的一半!!!我不知道有什么问题。有人建议我应该使用Jsoup,但是如果Jsoup中的.get.html()函数太长,那么它也会返回页面源代码的一半。因为我正在编写一个爬虫程序,所以该方法支持unicode(UTF-8)非常重要,效率也非常重要。我想知道最好的现代方法,所以我问你们,因为我是Java新手。谢谢 代码:Java—下载网页的最佳方式';s源html,java,download,Java,Download,我在写一个小爬虫。下载网页源html的最佳方式是什么?我目前正在使用下面的一小段代码,但有时结果只是页面源代码的一半!!!我不知道有什么问题。有人建议我应该使用Jsoup,但是如果Jsoup中的.get.html()函数太长,那么它也会返回页面源代码的一半。因为我正在编写一个爬虫程序,所以该方法支持unicode(UTF-8)非常重要,效率也非常重要。我想知道最好的现代方法,所以我问你们,因为我是Java新手。谢谢 代码: 我使用stringhtml=IOUtils.toString(url.o
我使用
stringhtml=IOUtils.toString(url.openStream(),“utf-8”)代码>我使用字符串html=IOUtils.toString(url.openStream(),“utf-8”)代码>就个人而言,我对Apache HTTP库非常满意。如果你正在编写一个网络爬虫,我也是,你可能会非常感激它对cookies和客户端共享等东西的控制。就个人而言,我对Apache HTTP库非常满意。如果你正在编写一个网络爬虫,我也是,你可能会非常感激它对cookies和客户端共享等内容的控制。同样的问题。返回的字符串以…
结尾,其长度为:439802@AlirezaNoori给我目标urlUtilities.downloadPage(“http://www.stackoverflow.com“”.length()
已返回:191760
并且它的最后一个字符是:…
确定。问题解决了!!!!Eclipse只显示了我字符串的一半,因此出现了这个问题!!我把这个输出写到一个文件中,一切都很好!我找不到任何方法可以在调试时检查完整的字符串!!令人惊叹的!认真地我花在Java上的时间越多,我就越喜欢.Net!!!同样的问题。返回的字符串以…
结尾,其长度为:439802@AlirezaNoori给我目标urlUtilities.downloadPage(“http://www.stackoverflow.com“”.length()
已返回:191760
并且它的最后一个字符是:…
确定。问题解决了!!!!Eclipse只显示了我字符串的一半,因此出现了这个问题!!我把这个输出写到一个文件中,一切都很好!我找不到任何方法可以在调试时检查完整的字符串!!令人惊叹的!认真地我花在Java上的时间越多,我就越喜欢.Net!!!这不是一个丰富的爬虫,但我希望它做什么,它做的尽可能快和完美。目前我只想让它下载页面的源代码,我不需要太多的控制,但如果它不会给我的代码带来太多的复杂性,我会非常乐意使用它。你认为呢?既然我发现了问题所在,你认为我应该使用这个库还是应该使用我的旧代码?两种解决方案都可以,但第一种解决方案存在一些问题(例如imdb.com会返回403错误)。所以我选择了这个作为答案。它很容易使用。它不是一个丰富的爬虫程序,但我希望它能尽可能快和完美地完成它所做的事情。目前我只想让它下载页面的源代码,我不需要太多的控制,但如果它不会给我的代码带来太多的复杂性,我会非常乐意使用它。你认为呢?既然我发现了问题所在,你认为我应该使用这个库还是应该使用我的旧代码?两种解决方案都可以,但第一种解决方案存在一些问题(例如imdb.com会返回403错误)。所以我选择了这个作为答案。它很容易使用。
public static String downloadPage(String url)
{
try
{
URL pageURL = new URL(url);
StringBuilder text = new StringBuilder();
Scanner scanner = new Scanner(pageURL.openStream(), "utf-8");
try {
while (scanner.hasNextLine()){
text.append(scanner.nextLine() + NL);
}
}
finally{
scanner.close();
}
return text.toString();
}
catch(Exception ex)
{
return null;
}
}