如何解决使用Java从网页提取数据?
| 我正在尝试用Java编写我的第一个程序。目的是编写一个程序以浏览到网站并为我下载文件。但是,我不知道如何使用Java与互联网进行交互。谁能告诉我要查找/阅读哪些主题或推荐一些好的资源?解决方法
最简单的解决方案(不依赖于任何第三方库或平台)是创建一个指向要下载的网页/链接的URL实例,并使用流读取内容。
例如:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class DownloadPage {
public static void main(String[] args) throws IOException {
// Make a URL to the web page
URL url = new URL(\"http://stackoverflow.com/questions/6159118/using-java-to-pull-data-from-a-webpage\");
// Get the input stream through URL Connection
URLConnection con = url.openConnection();
InputStream is =con.getInputStream();
// Once you have the Input Stream,it\'s just plain old Java IO stuff.
// For this case,since you are interested in getting plain-text web page
// I\'ll use a reader and output the text content to System.out.
// For binary content,it\'s better to directly read the bytes from stream and write
// to the target file.
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
// read each line and write to System.out
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
希望这可以帮助。
, 基础
查看以下内容以从头开始或多或少构建解决方案:
从基础开始:Java教程中有关网络的章节,包括使用URL
使事情变得更轻松:Apache HttpComponents(包括HttpClient)
容易粘合和缝合的东西
您始终可以选择使用exec()
和类似方法从Java调用外部工具。例如,您可以使用wget
或cURL
。
铁杆的东西
然后,如果您想了解更全面的内容,那么很幸运,因为我们为此提供了非常实用的工具,因此需要自动进行网络测试。看着:
HtmlUnit(强大而简单)
硒,RC
WebDriver / Selenium2(仍在开发中)
JBehave与JBehave Web
故意编写其他一些库时要考虑到网络剪贴:
汤
Jaunt
一些解决方法
Java是一种语言,也是一种平台,上面运行着许多其他语言。其中一些集成了强大的语法糖或库,可以轻松构建剪贴簿。
查看:
Groovy(及其XmlSlurper)
或Scala(此处和此处提供了强大的XML支持)
如果您知道Ruby(JRuby,以及有关使用JRuby和HtmlUnit进行抓取的文章)或Python(Jython)的优秀图书馆,或者您喜欢这些语言,那么请给它们的JVM端口一个机会。
一些补品
其他一些类似的问题:
使用Java从HTML抓取数据
HTML搜寻的选项
, 这是我使用URL
和try with resources
短语捕获异常的解决方案。
/**
* Created by mona on 5/27/16.
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadFromWeb {
public static void readFromWeb(String webURL) throws IOException {
URL url = new URL(webURL);
InputStream is = url.openStream();
try( BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
catch (MalformedURLException e) {
e.printStackTrace();
throw new MalformedURLException(\"URL is malformed!!\");
}
catch (IOException e) {
e.printStackTrace();
throw new IOException();
}
}
public static void main(String[] args) throws IOException {
String url = \"https://madison.craigslist.org/search/sub\";
readFromWeb(url);
}
}
您还可以根据需要将其保存到文件中,或使用XML
或HTML
库进行解析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。