JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法
本文實(shí)例講述了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法。分享給大家供大家參考。具體如下:
最近在用JAVA研究下爬網(wǎng)技術(shù),呵呵,入了個門,把自己的心得和大家分享下
以下提供二種方法,一種是用apache提供的包.另一種是用JAVA自帶的.
代碼如下:
// 第一種方法 //這種方法是用apache提供的包,簡單方便 //但是要用到以下包:commons-codec-1.4.jar // commons-httpclient-3.1.jar // commons-logging-1.0.4.jar public static String createhttpClient(String url, String param) { HttpClient client = new HttpClient(); String response = null; String keyword = null; PostMethod postMethod = new PostMethod(url); // try { // if (param != null) // keyword = new String(param.getBytes("gb2312"), "ISO-8859-1"); // } catch (UnsupportedEncodingException e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } // NameValuePair[] data = { new NameValuePair("keyword", keyword) }; // // 將表單的值放入postMethod中 // postMethod.setRequestBody(data); // 以上部分是帶參數(shù)抓取,我自己把它注銷了.大家可以把注銷消掉研究下 try { int statusCode = client.executeMethod(postMethod); response = new String(postMethod.getResponseBodyAsString() .getBytes("ISO-8859-1"), "gb2312"); //這里要注意下 gb2312要和你抓取網(wǎng)頁的編碼要一樣 String p = response.replaceAll("http://&[a-zA-Z]{1,10};", "") .replaceAll("<[^>]*>", "");//去掉網(wǎng)頁中帶有html語言的標(biāo)簽 System.out.println(p); } catch (Exception e) { e.printStackTrace(); } return response; } // 第二種方法 // 這種方法是JAVA自帶的URL來抓取網(wǎng)站內(nèi)容 public String getPageContent(String strUrl, String strPostRequest, int maxLength) { // 讀取結(jié)果網(wǎng)頁 StringBuffer buffer = new StringBuffer(); System.setProperty("sun.net.client.defaultConnectTimeout", "5000"); System.setProperty("sun.net.client.defaultReadTimeout", "5000"); try { URL newUrl = new URL(strUrl); HttpURLConnection hConnect = (HttpURLConnection) newUrl .openConnection(); // POST方式的額外數(shù)據(jù) if (strPostRequest.length() > 0) { hConnect.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(hConnect .getOutputStream()); out.write(strPostRequest); out.flush(); out.close(); } // 讀取內(nèi)容 BufferedReader rd = new BufferedReader(new InputStreamReader( hConnect.getInputStream())); int ch; for (int length = 0; (ch = rd.read()) > -1 && (maxLength <= 0 || length < maxLength); length++) buffer.append((char) ch); String s = buffer.toString(); s.replaceAll("http://&[a-zA-Z]{1,10};", "").replaceAll("<[^>]*>", ""); System.out.println(s); rd.close(); hConnect.disconnect(); return buffer.toString().trim(); } catch (Exception e) { // return "錯誤:讀取網(wǎng)頁失??!"; // return null; } }
然后寫個測試類:
public static void main(String[] args) { String url = "http://www.dbjr.com.cn"; String keyword = "腳本之家"; createhttpClient p = new createhttpClient(); String response = p.createhttpClient(url, keyword); // 第一種方法 // p.getPageContent(url, "post", 100500);//第二種方法 }
呵呵,看看控制臺吧,是不是把網(wǎng)頁的內(nèi)容獲取了
希望本文所述對大家的java程序設(shè)計(jì)有所幫助。
- 零基礎(chǔ)寫Java知乎爬蟲之抓取知乎答案
- 零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲到本地
- Java爬蟲實(shí)戰(zhàn)抓取一個網(wǎng)站上的全部鏈接
- Java爬蟲抓取視頻網(wǎng)站下載鏈接
- java爬蟲Gecco工具抓取新聞實(shí)例
- java正則表達(dá)式簡單使用和網(wǎng)頁爬蟲的制作代碼
- 基于Java HttpClient和Htmlparser實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲代碼
- java實(shí)現(xiàn)簡單的爬蟲之今日頭條
- Java實(shí)現(xiàn)的爬蟲抓取圖片并保存操作示例
- 一篇文章教會你使用java爬取想要的資源
相關(guān)文章
Java實(shí)現(xiàn)byte[]轉(zhuǎn)List的示例代碼
byte,即字節(jié),由8位的二進(jìn)制組成。在Java中,byte類型的數(shù)據(jù)是8位帶符號的二進(jìn)制數(shù)。List?是一個接口,它繼承于Collection的接口。它代表著有序的隊(duì)列。本文將介紹如何通過java實(shí)現(xiàn)byte[]轉(zhuǎn)List,需要的可以參考一下2022-01-01Java調(diào)用外接設(shè)備詳解(制卡機(jī))
這篇文章主要為大家詳細(xì)介紹了Java調(diào)用外接設(shè)備的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Java實(shí)現(xiàn)文件或文件夾的復(fù)制到指定目錄實(shí)例
本篇文章主要介紹了Java實(shí)現(xiàn)文件或文件夾的復(fù)制到指定目錄實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03springboot如何獲取接口下所有實(shí)現(xiàn)類
這篇文章主要介紹了springboot如何獲取接口下所有實(shí)現(xiàn)類問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09Spring boot實(shí)現(xiàn)熱部署的兩種方式詳解
這篇文章主要介紹了Spring boot實(shí)現(xiàn)熱部署的兩種方式,這兩種方法分別是使用 Spring Loaded和使用spring-boot-devtools進(jìn)行熱部署,文中給出了詳細(xì)示例代碼和介紹,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2017-04-04java編程實(shí)現(xiàn)根據(jù)EXCEL列名求其索引的方法
這篇文章主要介紹了java編程實(shí)現(xiàn)根據(jù)EXCEL列名求其索引的方法,涉及Java元素遍歷與數(shù)學(xué)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名
這篇文章主要介紹了java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名,主要用在做主題時替換這些常見應(yīng)用的圖片,需要的朋友可以參考下2014-06-06