方式一:
一是使用URL类的openStream()方法:
openStream()方法与制定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据;
openStream()方法只能读取网络资源。
二是使用URL类的openConnection()方法:
openConnection()方法会创建一个URLConnection类的对象,此对象在本地机和URL指定的远程节点建立一条HTTP协议的数据通道,可进行双向数据传输。类URLConnection提供了很多设置和获取连接参数的方法,最常用到的是getInputStream()和getOutputStream()方法。
openConnection()方法既能读取又能发送数据。
列如:
public static void main(String args[]) throws Exception {
try {
//输入url路径
URL url = new URL("url路径") InputStream in =url.openStream() InputStreamReader isr = new InputStreamReader(in) BufferedReader bufr = new BufferedReader(isr) String str while ((str = bufr.readLine()) != null) {System.out.println(str) }bufr.close() isr.close() in.close() } catch (Exception e) {e.printStackTrace() }}
java可以使用jsoup、htmlparser等工具进行html的读取和解析,以下是详细说明:1、jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。据说它是基于MIT协议发布的。
jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML;
使用DOM或CSS选择器来查找、取出数据;
可操作HTML元素、属性、文本;
示例代码:
Document doc = Jsoup.parse(input, "UTF-8", "http://www.dangdang.com")
Element content = doc.getElementById("content")
Elements links = content.getElementsByTag("a")
for (Element link : links) {
String linkHref = link.attr("href")
String linkText = link.text()
}
2、htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html。它能超高速解析html,而且不会出错。现在htmlparser最新版本为2.0。 据说htmlparser就是目前最好的html解析和分析的工具。无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。
在线文档: http://www.osctools.net/apidocs/apidoc?api=HTMLParser;http://htmlparser.sourceforge.net/project-info.html
示例代码:
Parser parser = new Parser ("http://www.dangdang.com")
NodeList list = parser.parse (null)
Node node = list.elementAt (0)
NodeList sublist = node.getChildren ()
System.out.println (sublist.size ())
package httpclient_learnimport java.io.IOExceptionimport org.apache.http.HttpEntityimport org.apache.http.HttpStatusimport org.apache.http.client.ClientProtocolExceptionimport org.apache.http.client.methods.CloseableHttpResponseimport org.apache.http.client.methods.HttpGetimport org.apache.http.client.utils.HttpClientUtilsimport org.apache.http.impl.client.CloseableHttpClientimport org.apache.http.impl.client.HttpClientsimport org.apache.http.util.EntityUtilspublic class HttpClientTest {public static void main(String[] args) {//1.生成httpclient,相当于该打开一个浏览器
CloseableHttpClient httpClient = HttpClients.createDefault()
CloseableHttpResponse response = null //2.创建get请求,相当于在浏览器地址栏输入 网址
HttpGet request = new HttpGet("https://www.cnblogs.com/") try {//3.执行get请求,相当于在输入地址栏后敲回车键
response = httpClient.execute(request)
//4.判断响应状态为200,进行处理
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {//5.获取响应内容
HttpEntity httpEntity = response.getEntity()
String html = EntityUtils.toString(httpEntity, "utf-8")
System.out.println(html)
} else {//如果返回状态不是200,比如404(页面不存在)等,根据情况做处理,这里略
System.out.println("返回状态不是200")
System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"))
}
} catch (ClientProtocolException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
} finally {//6.关闭HttpClientUtils.closeQuietly(response)
HttpClientUtils.closeQuietly(httpClient)
}
}
}