java簡(jiǎn)單網(wǎng)頁抓取的實(shí)現(xiàn)方法
本文實(shí)例講述了java簡(jiǎn)單網(wǎng)頁抓取的實(shí)現(xiàn)方法。分享給大家供大家參考。具體分析如下:
背景介紹
一 tcp簡(jiǎn)介
1 tcp 實(shí)現(xiàn)網(wǎng)絡(luò)中點(diǎn)對(duì)點(diǎn)的傳輸
2 傳輸是通過ports和sockets
ports提供了不同類型的傳輸(例如 http的port是80)
1)sockets可以綁定在特定端口上,并且提供傳輸功能
2)一個(gè)port可以連接多個(gè)socket
二 URL簡(jiǎn)介
URL 是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡(jiǎn)潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。
互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。
綜上,我們要抓取網(wǎng)頁的內(nèi)容實(shí)質(zhì)上就是通過url來抓取網(wǎng)頁內(nèi)容。
Java提供了兩種方法:
一種是直接從URL讀取網(wǎng)頁
一種是通過 URLConnection來讀取網(wǎng)頁
其中的URLConnection是以http為核心的類,提供了很多關(guān)于連接http的函數(shù)
本文將給出基于URLConnection的實(shí)例代碼。
在此之前我們先來看下關(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)頁內(nèi)容的方法
- java抓取網(wǎng)頁數(shù)據(jù)獲取網(wǎng)頁中所有的鏈接實(shí)例分享
- java正則表達(dá)式匹配網(wǎng)頁所有網(wǎng)址和鏈接文字的示例
- Java中使用正則表達(dá)式獲取網(wǎng)頁中所有圖片的路徑
- java 抓取網(wǎng)頁內(nèi)容實(shí)現(xiàn)代碼
- java抓取網(wǎng)頁數(shù)據(jù)示例
- Java用正則表達(dá)式如何讀取網(wǎng)頁內(nèi)容
- java實(shí)現(xiàn)網(wǎng)頁解析示例
- 用javascrpt將指定網(wǎng)頁保存為Excel的代碼
- Java獲取任意http網(wǎng)頁源代碼的方法
相關(guān)文章
關(guān)于阿里巴巴TransmittableThreadLocal使用解讀
文章主要介紹了三種ThreadLocal的使用:ThreadLocal、InheritableThreadLocal和TransmittableThreadLocal,ThreadLocal和InheritableThreadLocal在單線程和部分情況下可以正常工作,但TransmittableThreadLocal在處理線程池時(shí)表現(xiàn)更佳2025-02-02
spring boot2.0圖片上傳至本地或服務(wù)器并配置虛擬路徑的方法
最近寫了關(guān)于圖片上傳至本地文件夾或服務(wù)器,上傳路徑到數(shù)據(jù)庫,并在上傳時(shí)預(yù)覽圖片。本文通過實(shí)例代碼給大家分享spring boot2.0圖片上傳至本地或服務(wù)器并配置虛擬路徑的方法,需要的朋友參考下2018-12-12
Java面試之限流的實(shí)現(xiàn)方式小結(jié)
限流是指在各種應(yīng)用場(chǎng)景中,通過技術(shù)和策略手段對(duì)數(shù)據(jù)流量、請(qǐng)求頻率或資源消耗進(jìn)行有計(jì)劃的限制,本文為大家整理了常見的限流的實(shí)現(xiàn)方式,有需要的可以參考下2024-02-02
基于list stream: reduce的使用實(shí)例
這篇文章主要介紹了list stream: reduce的使用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
springboot之SpringApplication生命周期和事件機(jī)制解讀
這篇文章主要介紹了springboot之SpringApplication生命周期和事件機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

