JAVA使用爬蟲(chóng)抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法
本文實(shí)例講述了JAVA使用爬蟲(chóng)抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法。分享給大家供大家參考。具體如下:
最近在用JAVA研究下爬網(wǎng)技術(shù),呵呵,入了個(gè)門(mén),把自己的心得和大家分享下
以下提供二種方法,一種是用apache提供的包.另一種是用JAVA自帶的.
代碼如下:
// 第一種方法
//這種方法是用apache提供的包,簡(jiǎn)單方便
//但是要用到以下包: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ù)抓取,我自己把它注銷(xiāo)了.大家可以把注銷(xiāo)消掉研究下
try {
int statusCode = client.executeMethod(postMethod);
response = new String(postMethod.getResponseBodyAsString()
.getBytes("ISO-8859-1"), "gb2312");
//這里要注意下 gb2312要和你抓取網(wǎng)頁(yè)的編碼要一樣
String p = response.replaceAll("http://&[a-zA-Z]{1,10};", "")
.replaceAll("<[^>]*>", "");//去掉網(wǎng)頁(yè)中帶有html語(yǔ)言的標(biāo)簽
System.out.println(p);
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
// 第二種方法
// 這種方法是JAVA自帶的URL來(lái)抓取網(wǎng)站內(nèi)容
public String getPageContent(String strUrl, String strPostRequest,
int maxLength) {
// 讀取結(jié)果網(wǎng)頁(yè)
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 "錯(cuò)誤:讀取網(wǎng)頁(yè)失??!";
//
return null;
}
}
然后寫(xiě)個(gè)測(cè)試類(lèi):
public static void main(String[] args) {
String url = "http://www.dhdzp.com";
String keyword = "腳本之家";
createhttpClient p = new createhttpClient();
String response = p.createhttpClient(url, keyword);
// 第一種方法
// p.getPageContent(url, "post", 100500);//第二種方法
}
呵呵,看看控制臺(tái)吧,是不是把網(wǎng)頁(yè)的內(nèi)容獲取了
希望本文所述對(duì)大家的java程序設(shè)計(jì)有所幫助。
- 零基礎(chǔ)寫(xiě)Java知乎爬蟲(chóng)之抓取知乎答案
- 零基礎(chǔ)寫(xiě)Java知乎爬蟲(chóng)之將抓取的內(nèi)容存儲(chǔ)到本地
- Java爬蟲(chóng)實(shí)戰(zhàn)抓取一個(gè)網(wǎng)站上的全部鏈接
- Java爬蟲(chóng)抓取視頻網(wǎng)站下載鏈接
- java爬蟲(chóng)Gecco工具抓取新聞實(shí)例
- java正則表達(dá)式簡(jiǎn)單使用和網(wǎng)頁(yè)爬蟲(chóng)的制作代碼
- 基于Java HttpClient和Htmlparser實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)代碼
- java實(shí)現(xiàn)簡(jiǎn)單的爬蟲(chóng)之今日頭條
- Java實(shí)現(xiàn)的爬蟲(chóng)抓取圖片并保存操作示例
- 一篇文章教會(huì)你使用java爬取想要的資源
相關(guān)文章
如何通過(guò)一個(gè)注解實(shí)現(xiàn)MyBatis字段加解密
用戶(hù)隱私很重要,因此很多公司開(kāi)始做數(shù)據(jù)加減密改造,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一個(gè)注解實(shí)現(xiàn)MyBatis字段加解密的相關(guān)資料,需要的朋友可以參考下2022-02-02
springboot集成mybatis-plus全過(guò)程
本文詳細(xì)介紹了如何在SpringBoot環(huán)境下集成MyBatis-Plus,包括配置maven依賴(lài)、application.yaml文件、創(chuàng)建數(shù)據(jù)庫(kù)和Java實(shí)體類(lèi)、Mapper層、Service層和Controller層的設(shè)置,同時(shí),還涵蓋了時(shí)間自動(dòng)填充、分頁(yè)查詢(xún)、多對(duì)一和一對(duì)多的數(shù)據(jù)庫(kù)映射關(guān)系設(shè)置2024-09-09
java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
java.imageIo給圖片添加水印的實(shí)現(xiàn)代碼
最近項(xiàng)目在做一個(gè)商城項(xiàng)目, 項(xiàng)目上的圖片要添加水印①,添加圖片水印;②:添加文字水印;一下提供下個(gè)方法,希望大家可以用得著2013-07-07
string類(lèi)和LocalDateTime的相互轉(zhuǎn)換方式
這篇文章主要介紹了string類(lèi)和LocalDateTime的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
還在用if(obj!=null)做非空判斷,帶你快速上手Optional
這篇文章主要介紹了還在用if(obj!=null)做非空判斷,帶你快速上手Optional,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05

