日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java网络爬虫实操(8)

發布時間:2023/12/9 java 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java网络爬虫实操(8) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇:Java網絡爬蟲實操(7)

大家好,本篇文章介紹一下NetDiscovery爬蟲框架里的downloader對象

1) 前言

面向對象設計仍然是目前編程的核心思想,從下面截圖可以了解爬蟲框架的主要對象:

程序在本地組織好一個request后,交給downloader從網絡上抓取數據到本地,然后由parser處理本地的這些數據,最終生成可用的信息。

2) downloader介紹

downloader我們也稱為下載器,主要功能就是訪問網絡并成功抓回我們要的數據:例如html網頁、json/xml數據、二進制流(圖片、office文檔等) 目前NetDiscovery支持的downloader實現有:

面向接口編程是這個框架的重要設計思想之一。

以下介紹部分downloader代碼,這些代碼的共同點是實現了Downloader接口。

作為程序開發者,你也可以實現接口com.cv4j.netdiscovery.core.downloader.Downloader,創建自己的下載器類。

  • UrlConnectionDownloader 這個用的是jdk自帶的包,java.io、java.net
//1、構建一個URL對象 url = new URL(request.getUrl()); //2、獲取一個HttpURLConnection對象 conn = url.openConnection(); //3、一堆設置 conn .setDoOutput(true); conn .setDoInput(true); conn .setRequestMethod("POST"); ...... //4、訪問網絡服務 conn.connect(); //5、執行成功的話,獲取結果 conn.getResponseCode(); conn.getInputStream(); 復制代碼
  • HttpClientDownloader 這個是用開源包apache httpclient實現的,代碼就更加簡潔優雅了。
//1、獲取一個HttpManager對象(框架自己封裝的) HttpManager httpManager = HttpManager.get(); //2、然后把request扔進去,等結果就可以了.request也是框架封裝的 httpManager.getResponse(request) //3、等來結果后,進行處理@Overridepublic Response apply(CloseableHttpResponse closeableHttpResponse) throws Exception {String charset = null;if (Preconditions.isNotBlank(request.getCharset())) {charset = request.getCharset(); //針對一些還是GB2312編碼的網頁} else {charset = "UTF-8";}String html = EntityUtils.toString(closeableHttpResponse.getEntity(), charset);Response response = new Response();response.setContent(html.getBytes());response.setStatusCode(closeableHttpResponse.getStatusLine().getStatusCode());if (closeableHttpResponse.containsHeader("Content-Type")) {response.setContentType(closeableHttpResponse.getFirstHeader("Content-Type").getValue());}return response;} 復制代碼
  • VertxDownloader等類大家有需要都可以去了解一下。

3) 總結

總之,爬蟲程序本質上是一個網絡程序,網絡程序的核心模塊離不開對網絡數據的處理。建議學習爬蟲的伙伴們,要看源代碼的話,可以先從框架中的downloader相關代碼開始了解。相信一定會有收獲的。

下一篇:Java網絡爬蟲實操(9)

總結

以上是生活随笔為你收集整理的Java网络爬虫实操(8)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。