java簡(jiǎn)單網(wǎng)頁(yè)抓取的實(shí)現(xiàn)方法
本文實(shí)例講述了java簡(jiǎn)單網(wǎng)頁(yè)抓取的實(shí)現(xiàn)方法。分享給大家供大家參考。具體分析如下:
背景介紹
一 tcp簡(jiǎn)介
1 tcp 實(shí)現(xiàn)網(wǎng)絡(luò)中點(diǎn)對(duì)點(diǎn)的傳輸
2 傳輸是通過(guò)ports和sockets
ports提供了不同類型的傳輸(例如 http的port是80)
1)sockets可以綁定在特定端口上,并且提供傳輸功能
2)一個(gè)port可以連接多個(gè)socket
二 URL簡(jiǎn)介
URL 是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。
互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。
綜上,我們要抓取網(wǎng)頁(yè)的內(nèi)容實(shí)質(zhì)上就是通過(guò)url來(lái)抓取網(wǎng)頁(yè)內(nèi)容。
Java提供了兩種方法:
一種是直接從URL讀取網(wǎng)頁(yè)
一種是通過(guò) URLConnection來(lái)讀取網(wǎng)頁(yè)
其中的URLConnection是以http為核心的類,提供了很多關(guān)于連接http的函數(shù)
本文將給出基于URLConnection的實(shí)例代碼。
在此之前我們先來(lái)看下關(guān)于url的異常。不了解java異常機(jī)制的請(qǐng)參看上一篇博文。
構(gòu)造URL的異常MalformedURLException產(chǎn)生條件:url的字符串為空或者是不能辨認(rèn)的協(xié)議
建立 URLConnection的異常 IOException產(chǎn)生條件: openConnection失敗,注意openConnection時(shí) 代碼還未連接遠(yuǎn)程,只是為連接遠(yuǎn)程做準(zhǔn)備
綜上所述,最終代碼如下:
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class SimpleNetSpider {
public static void main(String[] args) {
try{
URL u = new URL("http://docs.oracle.com/javase/tutorial/networking/urls/");
URLConnection connection = u.openConnection();
HttpURLConnection htCon = (HttpURLConnection) connection;
int code = htCon.getResponseCode();
if (code == HttpURLConnection.HTTP_OK)
{
System.out.println("find the website");
BufferedReader in=new BufferedReader(new InputStreamReader(htCon.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
else
{
System.out.println("Can not access the website");
}
}
catch(MalformedURLException e )
{
System.out.println("Wrong URL");
}
catch(IOException e)
{
System.out.println("Can not connect");
}
}
}
希望本文所述對(duì)大家的Java程序設(shè)計(jì)有所幫助。
- JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法
- java抓取網(wǎng)頁(yè)數(shù)據(jù)獲取網(wǎng)頁(yè)中所有的鏈接實(shí)例分享
- java正則表達(dá)式匹配網(wǎng)頁(yè)所有網(wǎng)址和鏈接文字的示例
- Java中使用正則表達(dá)式獲取網(wǎng)頁(yè)中所有圖片的路徑
- java 抓取網(wǎng)頁(yè)內(nèi)容實(shí)現(xiàn)代碼
- java抓取網(wǎng)頁(yè)數(shù)據(jù)示例
- Java用正則表達(dá)式如何讀取網(wǎng)頁(yè)內(nèi)容
- java實(shí)現(xiàn)網(wǎng)頁(yè)解析示例
- 用javascrpt將指定網(wǎng)頁(yè)保存為Excel的代碼
- Java獲取任意http網(wǎng)頁(yè)源代碼的方法
相關(guān)文章
java并發(fā)編程工具類PriorityBlockingQueue優(yōu)先級(jí)隊(duì)列
這篇文章主要為大家介紹了java并發(fā)編程工具類PriorityBlockingQueue優(yōu)先級(jí)隊(duì)列的方法示例應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03Spring?Retry實(shí)現(xiàn)重試機(jī)制的示例詳解
這篇文章主要為大家詳細(xì)介紹了Spring-Retry的用法以及實(shí)現(xiàn)原理是怎么樣的,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下2023-07-07IntelliJ IDEA基于SpringBoot如何搭建SSM開發(fā)環(huán)境的步驟詳解
這篇文章主要介紹了IntelliJ IDEA基于SpringBoot如何搭建SSM開發(fā)環(huán)境,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10JUC并發(fā)編程LinkedBlockingQueue隊(duì)列深入分析源碼
LinkedBlockingQueue 是一個(gè)可選有界阻塞隊(duì)列,這篇文章主要為大家詳細(xì)介紹了Java中LinkedBlockingQueue的實(shí)現(xiàn)原理與適用場(chǎng)景,感興趣的可以了解一下2023-04-04java對(duì)于目錄下文件的單詞查找操作代碼實(shí)現(xiàn)
這篇文章主要介紹了java對(duì)于目錄下文件的單詞查找操作代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11