一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - JAVA使用爬蟲抓取網站網頁內容的方法

JAVA使用爬蟲抓取網站網頁內容的方法

2019-12-28 14:46fzhlee JAVA教程

這篇文章主要介紹了JAVA使用爬蟲抓取網站網頁內容的方法,實例分析了java爬蟲的兩種實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了JAVA使用爬蟲抓取網站網頁內容的方法。分享給大家供大家參考。具體如下:

最近在用JAVA研究下爬網技術,呵呵,入了個門,把自己的心得和大家分享下
以下提供二種方法,一種是用apache提供的包.另一種是用JAVA自帶的.

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// 第一種方法
//這種方法是用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);
  // 以上部分是帶參數抓取,我自己把它注銷了.大家可以把注銷消掉研究下
  try {
   int statusCode = client.executeMethod(postMethod);
   response = new String(postMethod.getResponseBodyAsString()
     .getBytes("ISO-8859-1"), "gb2312");
     //這里要注意下 gb2312要和你抓取網頁的編碼要一樣
   String p = response.replaceAll("//&[a-zA-Z]{1,10};", "")
     .replaceAll("<[^>]*>", "");//去掉網頁中帶有html語言的標簽
   System.out.println(p);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return response;
}
// 第二種方法
// 這種方法是JAVA自帶的URL來抓取網站內容
public String getPageContent(String strUrl, String strPostRequest,
   int maxLength) {
  // 讀取結果網頁
  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方式的額外數據
   if (strPostRequest.length() > 0) {
    hConnect.setDoOutput(true);
    OutputStreamWriter out = new OutputStreamWriter(hConnect
      .getOutputStream());
    out.write(strPostRequest);
    out.flush();
    out.close();
   }
   // 讀取內容
   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("//&[a-zA-Z]{1,10};", "").replaceAll("<[^>]*>", "");
   System.out.println(s);
   rd.close();
   hConnect.disconnect();
   return buffer.toString().trim();
  } catch (Exception e) {
   // return "錯誤:讀取網頁失敗!";
   //
   return null;
  }
}

然后寫個測試類:

?
1
2
3
4
5
6
7
8
public static void main(String[] args) {
  String url = "//www.ythuaji.com.cn";
  String keyword = "服務器之家";
  createhttpClient p = new createhttpClient();
  String response = p.createhttpClient(url, keyword);
  // 第一種方法
  // p.getPageContent(url, "post", 100500);//第二種方法
}

呵呵,看看控制臺吧,是不是把網頁的內容獲取了

希望本文所述對大家的java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本视频免费在线播放 | 色花堂国产精品首页第一页 | 四虎影院久久 | 日本又大又硬又粗的视频 | 3d动漫美女被吸乳羞羞视频 | 青青草成人在线观看 | 国产好痛疼轻点好爽的视频 | 精品久久综合一区二区 | 久久婷婷电影网 | 成年男人永久免费看片 | 亚洲国产精品自在现线让你爽 | 狠狠综合久久综合网站 | 久久高清一级毛片 | 亚洲天堂2013| 97久久精品午夜一区二区 | 姐姐不~不可以动漫在线观看 | 情人我吃糖果小说 | 色琪琪原网站亚洲香蕉 | 奇米社区| 国产青色 | 古代翁熄系小说辣文 | 肉蒲在线观看 | 楚乔传第二部免费观看全集完整版 | 亚洲乱亚洲23p女 | 末代皇帝无删减版在线观看 | 色综合精品 | 91夜夜操| 无码AV精品一区二区三区 | bnb998八度免费影院丫意浓 | 99热精品久久 | 男女肉粗暴进来下面好紧 | 大胆暴露亚洲美女xxxx | 91探花在线观看 | 天天爱天天操天天射 | 日日爽日日操 | 亚洲福利一区二区 | 二区三区在线观看 | 91大神第九部红酒气质女 | 亚洲AV无码专区国产乱码网站 | www.日日操| 美日韩一区二区三区 |