整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML大文件上傳源代碼

          TML大文件上傳源代碼,HTML大文件上傳解決方案,HTML大文件上傳思路,HTML大文件上傳實(shí)例,HTML大文件分塊上傳,HTML大文件分片上傳,HTML大文件批量上傳,HTML大文件加密上傳,HTML文件夾上傳,HTML大文件多線程上傳,


          隨著視頻網(wǎng)站和大數(shù)據(jù)應(yīng)用的普及,特別是高清視頻和4K視頻應(yīng)用的到來(lái),超大文件上傳已經(jīng)成為了日常的基礎(chǔ)應(yīng)用需求。

          但是在很多情況下,平臺(tái)運(yùn)營(yíng)方并沒(méi)有大文件上傳和斷點(diǎn)續(xù)傳的開(kāi)發(fā)經(jīng)驗(yàn),往往在網(wǎng)上找一些簡(jiǎn)單的PHP或者Java程序來(lái)實(shí)現(xiàn)基本的上傳功能,然而在實(shí)際使用中會(huì)發(fā)現(xiàn),這些基于腳本語(yǔ)言實(shí)現(xiàn)的上傳功能模塊性能很弱,一是不支持2GB以上的內(nèi)容上傳;二是無(wú)法支持?jǐn)帱c(diǎn)續(xù)傳;三是效率極低,單臺(tái)服務(wù)器最多支持幾十個(gè)并發(fā)上傳連接。

          當(dāng)前我們要搭建一個(gè)運(yùn)營(yíng)級(jí)的視頻服務(wù)平臺(tái),在嘗試了各種產(chǎn)品均無(wú)法滿足要求,因此最后花精力自主用C++語(yǔ)言實(shí)現(xiàn)了這一高性能上傳服務(wù)器。

          而基于PHP、JAVA等技術(shù)實(shí)現(xiàn)的文件上傳服務(wù)天生無(wú)法支持超大文件上傳,無(wú)法逾越2GB的最大文件尺寸瓶頸;

          支持4GB以上超大文件上傳,文件大小不受限制;

          支持?jǐn)帱c(diǎn)續(xù)傳,斷網(wǎng)、關(guān)機(jī)重啟均不受影響;

          對(duì)于大文件的處理,無(wú)論是用戶端還是服務(wù)端,如果一次性進(jìn)行讀取發(fā)送、接收都是不可取,很容易導(dǎo)致內(nèi)存問(wèn)題。所以對(duì)于大文件上傳,采用切塊分段上傳

          從上傳的效率來(lái)看,利用多線程并發(fā)上傳能夠達(dá)到最大效率。

          文件上傳頁(yè)面的前端可以選擇使用一些比較好用的上傳組件,例如百度的開(kāi)源組件WebUploader,這些組件基本能滿足文件上傳的一些日常所需功能,如異步上傳文件,文件夾,拖拽式上傳,黏貼上傳,上傳進(jìn)度監(jiān)控,文件縮略圖,甚至是大文件斷點(diǎn)續(xù)傳,大文件秒傳。

          在web項(xiàng)目中上傳文件夾現(xiàn)在已經(jīng)成為了一個(gè)主流的需求。在OA,或者企業(yè)ERP系統(tǒng)中都有類似的需求。上傳文件夾并且保留層級(jí)結(jié)構(gòu)能夠?qū)τ脩粜谐珊芎玫囊龑?dǎo),用戶使用起來(lái)也更方便。能夠提供更高級(jí)的應(yīng)用支撐。


          導(dǎo)入項(xiàng)目:
          導(dǎo)入到Eclipse:
          http://www.ncmem.com/doc/view.aspx?id=9da9c7c2b91b40b7b09768eeb282e647
          導(dǎo)入到IDEA:http://www.ncmem.com/doc/view.aspx?id=9fee385dfc0742448b56679420f22162
          springboot統(tǒng)一配置:http://www.ncmem.com/doc/view.aspx?id=7768eec9284b48e3abe08f032f554ea2



          下載示例:

          https://gitee.com/xproer/up6-jsp-eclipse/tree/6.5.40/




          工程



          NOSQL

          NOSQL示例不需要任何配置,可以直接訪問(wèn)測(cè)試



          創(chuàng)建數(shù)據(jù)表

          選擇對(duì)應(yīng)的數(shù)據(jù)表腳本,這里以SQL為例




          修改數(shù)據(jù)庫(kù)連接信息


          訪問(wèn)頁(yè)面進(jìn)行測(cè)試



          文件存儲(chǔ)路徑

          up6/upload/年/月/日/guid/filename






          相關(guān)問(wèn)題:
          1.javax.servlet.http.HttpServlet錯(cuò)誤
          2.項(xiàng)目無(wú)法發(fā)布到tomcat
          3.md5計(jì)算完畢后卡住
          4.服務(wù)器找不到config.json文件

          相關(guān)參考:

          文件保存位置


          源碼工程文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra

          源碼報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl



          OEM版報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a

          產(chǎn)品源代碼:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc
          授權(quán)生成器:https://drive.weixin.qq.com/s?k=ACoAYgezAAwTIcFph1

          java就業(yè)班」2019從網(wǎng)頁(yè)搭建入門JavaWeb

          來(lái)百度APP暢享高清圖片

          //下栽のke:chaoxingit.com/1534/

          從網(wǎng)頁(yè)搭建入門到JavaWeb:2019版詳解

          一、引言

          隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,JavaWeb已經(jīng)成為了一種非常流行的開(kāi)發(fā)技術(shù)。通過(guò)JavaWeb,我們可以快速地構(gòu)建出功能強(qiáng)大、安全可靠的Web應(yīng)用程序。本文將詳細(xì)介紹如何從網(wǎng)頁(yè)搭建入門到JavaWeb,幫助你掌握這門技術(shù)。

          二、JavaWeb簡(jiǎn)介

          JavaWeb指的是使用Java技術(shù)開(kāi)發(fā)的Web應(yīng)用程序。它是基于Java平臺(tái)的一種開(kāi)發(fā)模式,用于構(gòu)建和部署在Web服務(wù)器上運(yùn)行的應(yīng)用程序。JavaWeb通常涉及以下關(guān)鍵組件和技術(shù):

          1. Servlet: Servlet是Java編寫(xiě)的服務(wù)器端程序,主要用于處理HTTP請(qǐng)求和生成HTTP響應(yīng)。它們運(yùn)行在支持Servlet規(guī)范的Web服務(wù)器上,如Apache Tomcat、Jetty等。
          2. JSP(JavaServer Pages): JSP是一種服務(wù)器端的Java技術(shù),用于創(chuàng)建動(dòng)態(tài)Web頁(yè)面。JSP頁(yè)面可以包含HTML、Java代碼片段和JSP標(biāo)簽庫(kù),它們會(huì)在服務(wù)器端被解析和執(zhí)行,最終生成HTML響應(yīng)發(fā)送給客戶端。
          3. Servlet容器: Servlet容器是一個(gè)Web服務(wù)器組件,用于管理和執(zhí)行Servlet。它負(fù)責(zé)將HTTP請(qǐng)求路由到相應(yīng)的Servlet,并將Servlet生成的響應(yīng)發(fā)送回客戶端。
          4. JDBC(Java Database Connectivity): JDBC是Java提供的用于與數(shù)據(jù)庫(kù)交互的API。它允許Java應(yīng)用程序通過(guò)標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)操作語(yǔ)句與各種關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行通信。
          5. Web容器: Web容器是一種用于托管和運(yùn)行Web應(yīng)用程序的環(huán)境。它提供了Servlet容器、JSP引擎以及其他必要的組件,使得開(kāi)發(fā)者可以部署和管理JavaWeb應(yīng)用程序。
          6. MVC架構(gòu)(Model-View-Controller): MVC是一種常用的設(shè)計(jì)模式,用于將應(yīng)用程序分為三個(gè)核心部分:模型(Model)、視圖(View)和控制器(Controller)。在JavaWeb開(kāi)發(fā)中,開(kāi)發(fā)者通常使用MVC架構(gòu)來(lái)組織和管理應(yīng)用程序的代碼。
          7. Web框架: JavaWeb開(kāi)發(fā)中常用的框架包括Spring MVC、Struts、JSF(JavaServer Faces)等。這些框架提供了各種功能和工具,簡(jiǎn)化了開(kāi)發(fā)過(guò)程,并提高了代碼的可維護(hù)性和可擴(kuò)展性。

          JavaWeb應(yīng)用程序通常遵循HTTP協(xié)議,與客戶端通過(guò)HTTP請(qǐng)求和響應(yīng)進(jìn)行通信。它們可以處理各種類型的請(qǐng)求,包括GET、POST等,并能夠生成動(dòng)態(tài)內(nèi)容以及與數(shù)據(jù)庫(kù)等外部資源進(jìn)行交互。 JavaWeb的發(fā)展已經(jīng)成為構(gòu)建企業(yè)級(jí)應(yīng)用程序的主流方式之一,它提供了強(qiáng)大的功能和豐富的生態(tài)系統(tǒng),使得開(kāi)發(fā)者能夠構(gòu)建高性能、可靠和安全的Web應(yīng)用程序。

          三、學(xué)習(xí)資源

          要想入門JavaWeb,你可以選擇以下學(xué)習(xí)資源:

          1. 官方文檔:Java官方文檔提供了豐富的JavaWeb學(xué)習(xí)資源,包括API文檔、框架文檔和教程等。
          2. 培訓(xùn)課程:網(wǎng)絡(luò)上有很多免費(fèi)的JavaWeb培訓(xùn)課程,這些課程可以幫助你快速入門。
          3. 書(shū)籍:閱讀一些經(jīng)典的JavaWeb書(shū)籍,如《Head First Servlets and JavaServer Pages》等,可以幫助你深入理解JavaWeb技術(shù)。

          四、搭建開(kāi)發(fā)環(huán)境

          搭建JavaWeb開(kāi)發(fā)環(huán)境涉及到幾個(gè)主要組件,包括Java Development Kit (JDK)、集成開(kāi)發(fā)環(huán)境(IDE)、Servlet容器等。以下是從頭開(kāi)始搭建JavaWeb開(kāi)發(fā)環(huán)境的步驟:

          1. 安裝Java Development Kit (JDK):
          • 首先,你需要安裝Java Development Kit,它包含了Java編譯器(javac)和Java運(yùn)行時(shí)環(huán)境(JRE)。
          • 前往Oracle JDK官網(wǎng)或OpenJDK官網(wǎng)下載并安裝最新版本的JDK。
          • 設(shè)置JAVA_HOME環(huán)境變量,指向你的JDK安裝目錄。
        1. 安裝集成開(kāi)發(fā)環(huán)境(IDE):
          • 選擇一個(gè)JavaWeb開(kāi)發(fā)的IDE。Eclipse、IntelliJ IDEA和NetBeans是常見(jiàn)的選擇。
          • 下載并安裝你選擇的IDE。例如,你可以在IntelliJ IDEA官網(wǎng)下載IntelliJ IDEA。
        2. 安裝Servlet容器:
          • 選擇一個(gè)Servlet容器,例如Apache Tomcat。
          • 前往Apache Tomcat官網(wǎng)下載最新版本的Tomcat。
          • 解壓下載的文件到你想要安裝的目錄。
        3. 創(chuàng)建JavaWeb項(xiàng)目:
          • 打開(kāi)你的IDE,創(chuàng)建一個(gè)新的JavaWeb項(xiàng)目。
          • 在項(xiàng)目中配置Servlet容器,以便在開(kāi)發(fā)過(guò)程中能夠輕松部署和調(diào)試。
        4. 編寫(xiě)第一個(gè)Servlet:
          • 在項(xiàng)目中創(chuàng)建一個(gè)Servlet類,這是JavaWeb應(yīng)用程序的基本處理單元。
          • 實(shí)現(xiàn)doGet和/或doPost方法,用于處理HTTP請(qǐng)求和生成HTTP響應(yīng)。
        5. 配置Servlet容器:
          • 配置Servlet容器,告訴它在哪里找到你的Web應(yīng)用程序。
          • 在Tomcat中,你需要配置server.xml文件,添加一個(gè)新的<Context>元素,指向你的項(xiàng)目目錄。
        6. 部署和運(yùn)行:
          • 將你的JavaWeb項(xiàng)目部署到Servlet容器中。
          • 啟動(dòng)Servlet容器,查看你的JavaWeb應(yīng)用程序是否成功運(yùn)行。
        7. 學(xué)習(xí)HTML和基本前端知識(shí):
          • JavaWeb開(kāi)發(fā)通常涉及與前端進(jìn)行交互,因此學(xué)習(xí)HTML和基本的前端知識(shí)對(duì)于構(gòu)建用戶界面是很有幫助的。

          在完成上述步驟后,你就建立了一個(gè)基本的JavaWeb開(kāi)發(fā)環(huán)境,并且能夠開(kāi)始編寫(xiě)和部署簡(jiǎn)單的Web應(yīng)用程序。從這里開(kāi)始,你可以深入學(xué)習(xí)JavaWeb的各個(gè)方面,包括Servlet、JSP、數(shù)據(jù)庫(kù)連接等,以構(gòu)建更復(fù)雜和功能豐富的Web應(yīng)用程序。

          五、網(wǎng)頁(yè)搭建基礎(chǔ)

          網(wǎng)頁(yè)搭建是學(xué)習(xí)JavaWeb的基礎(chǔ),主要包括HTML、CSS和JavaScript等基礎(chǔ)知識(shí)。通過(guò)學(xué)習(xí)這些基礎(chǔ)知識(shí),你可以快速搭建出基本的網(wǎng)頁(yè)。

          六、JavaWeb核心技術(shù)

          JavaWeb 是使用 Java 技術(shù)進(jìn)行 Web 開(kāi)發(fā)的一種方式,它涵蓋了多個(gè)核心技術(shù)和框架。以下是 JavaWeb 的一些核心技術(shù):

          1. Servlet:
          • Servlet 是運(yùn)行在服務(wù)器端的 Java 應(yīng)用程序,主要用于處理客戶端的請(qǐng)求并生成響應(yīng)。
          • Servlet 繼承自 javax.servlet.Servlet 接口,通過(guò)覆蓋 doGet 和 doPost 等方法來(lái)處理不同類型的 HTTP 請(qǐng)求。
        8. JSP (JavaServer Pages):
          • JSP 允許在 HTML 頁(yè)面中嵌入 Java 代碼,它最終會(huì)被翻譯成 Servlet。
          • JSP 提供了簡(jiǎn)化開(kāi)發(fā)的方式,允許開(kāi)發(fā)人員在頁(yè)面中使用標(biāo)簽庫(kù)來(lái)調(diào)用 JavaBean 等組件。
        9. Servlet容器:
          • Servlet 容器是一個(gè) Web 服務(wù)器或應(yīng)用服務(wù)器組件,負(fù)責(zé)管理 Servlet 的生命周期、請(qǐng)求和響應(yīng)。
          • 常見(jiàn)的 Servlet 容器包括 Apache Tomcat、Jetty 和 WildFly。
        10. JavaBeans:
          • JavaBeans 是一種可重用的 Java 組件,通常用于在 Web 應(yīng)用程序中封裝數(shù)據(jù)和業(yè)務(wù)邏輯。
          • 在 JavaWeb 中,JavaBeans 可以被用于從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)、在頁(yè)面中展示數(shù)據(jù)等任務(wù)。
        11. JDBC (Java Database Connectivity):
          • JDBC 是 Java 用于與數(shù)據(jù)庫(kù)進(jìn)行交互的 API。
          • 在 JavaWeb 開(kāi)發(fā)中,使用 JDBC 可以連接數(shù)據(jù)庫(kù)、執(zhí)行 SQL 查詢和更新等操作。
        12. JPA (Java Persistence API):
          • JPA 是 Java 用于對(duì)象關(guān)系映射(ORM)的 API,簡(jiǎn)化了 Java 對(duì)象與數(shù)據(jù)庫(kù)表之間的映射。
          • Hibernate、EclipseLink 等框架實(shí)現(xiàn)了 JPA 規(guī)范,使得持久化操作更加方便。
        13. Spring框架:
          • Spring 是一個(gè)綜合性的 Java 開(kāi)發(fā)框架,提供了依賴注入、面向切面編程、事務(wù)管理等功能。
          • Spring 的模塊中有 Spring MVC 用于構(gòu)建 Web 應(yīng)用,Spring Boot 則簡(jiǎn)化了 Spring 應(yīng)用程序的搭建。
        14. Struts框架:
          • Struts 是一個(gè)基于 MVC 模式的 Web 應(yīng)用框架,用于簡(jiǎn)化開(kāi)發(fā)復(fù)雜的 Web 應(yīng)用程序。
          • Struts 的核心是一個(gè)控制器,負(fù)責(zé)接收用戶請(qǐng)求,并將其分發(fā)給相應(yīng)的處理器(Action)。
        15. Web Services:
          • JavaWeb 中常用的 Web 服務(wù)技術(shù)包括 SOAP(Simple Object Access Protocol)和 REST(Representational State Transfer)。
          • JAX-RS(Java API for RESTful Web Services)是 Java EE 中用于構(gòu)建 RESTful Web 服務(wù)的 API。
        16. Security:
          • JavaWeb 應(yīng)用程序的安全性是至關(guān)重要的。Java 提供了一些安全機(jī)制,例如 Java Authentication and Authorization Service (JAAS) 和 Java Security Architecture。

          以上是 JavaWeb 的一些核心技術(shù),這些技術(shù)一起構(gòu)成了一個(gè)完整的 JavaWeb 開(kāi)發(fā)生態(tài)系統(tǒng)。開(kāi)發(fā)人員可以根據(jù)項(xiàng)目需求選擇適當(dāng)?shù)募夹g(shù)和框架來(lái)構(gòu)建穩(wěn)健、高效的 Web 應(yīng)用程序。

          七、實(shí)踐項(xiàng)目

          實(shí)踐項(xiàng)目是學(xué)習(xí)JavaWeb的重要環(huán)節(jié),你可以選擇以下項(xiàng)目進(jìn)行實(shí)踐:

          1. 創(chuàng)建一個(gè)簡(jiǎn)單的Web應(yīng)用程序,包括用戶注冊(cè)、登錄和信息展示等功能;
          2. 實(shí)現(xiàn)一個(gè)博客網(wǎng)站,包括文章列表、評(píng)論和發(fā)布等功能;
          3. 與第三方API進(jìn)行交互,實(shí)現(xiàn)一個(gè)基于API的移動(dòng)應(yīng)用程序。

          通過(guò)實(shí)踐項(xiàng)目,你可以更好地掌握J(rèn)avaWeb技術(shù),并提高自己的編程能力和團(tuán)隊(duì)協(xié)作能力。

          八、總結(jié)與展望

          通過(guò)本文的介紹,相信你已經(jīng)對(duì)從網(wǎng)頁(yè)搭建入門到JavaWeb有了更深入的了解。要想成為一名優(yōu)秀的JavaWeb開(kāi)發(fā)者,你需要不斷學(xué)習(xí)、實(shí)踐和總結(jié)。同時(shí),隨著技術(shù)的不斷發(fā)展,你需要不斷關(guān)注新技術(shù)和趨勢(shì),并努力提升自己的技能水平。希望本文能夠幫助你成功邁向后端工程師的高階之路!

          大數(shù)據(jù)環(huán)境下,數(shù)據(jù)分析已由業(yè)務(wù)驅(qū)動(dòng)轉(zhuǎn)變?yōu)閿?shù)據(jù)驅(qū)動(dòng),網(wǎng)絡(luò)數(shù)據(jù)資源呈指數(shù)級(jí)增長(zhǎng),且散落在不同的數(shù)據(jù)源之中。對(duì)大多數(shù)企業(yè)和研究者而言,用“數(shù)據(jù)說(shuō)話”仿佛成了大數(shù)據(jù)時(shí)代的重要武器。網(wǎng)絡(luò)爬蟲(chóng)作為網(wǎng)絡(luò)數(shù)據(jù)獲取的重要技術(shù),受到了越來(lái)越多數(shù)據(jù)需求者的青睞和追捧。

          作為網(wǎng)絡(luò)爬蟲(chóng)的入門采用 Java 開(kāi)發(fā)語(yǔ)言,內(nèi)容涵蓋了網(wǎng)絡(luò)爬蟲(chóng)的原理以及開(kāi)發(fā)邏輯,Java 網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)知識(shí),網(wǎng)絡(luò)抓包介紹,jsoup 的介紹與使用,HttpClient 的介紹與使用等內(nèi)容。本課程在介紹網(wǎng)絡(luò)爬蟲(chóng)基本原理的同時(shí),注重具體的代碼實(shí)現(xiàn),加深讀者對(duì)爬蟲(chóng)的理解,加強(qiáng)讀者的實(shí)戰(zhàn)能力。

          內(nèi)容

          第01課:網(wǎng)絡(luò)爬蟲(chóng)原理

          引言

          隨著互聯(lián)網(wǎng)的迅速發(fā)展,網(wǎng)絡(luò)資源越來(lái)越豐富,信息需求者如何從網(wǎng)絡(luò)中抽取信息變得至關(guān)重要。目前,有效的獲取網(wǎng)絡(luò)數(shù)據(jù)資源的重要方式,便是網(wǎng)絡(luò)爬蟲(chóng)技術(shù)。簡(jiǎn)單的理解,比如您對(duì)百度貼吧的一個(gè)帖子內(nèi)容特別感興趣,而帖子的回復(fù)卻有1000多頁(yè),這時(shí)采用逐條復(fù)制的方法便不可行。而采用網(wǎng)絡(luò)爬蟲(chóng)便可以很輕松地采集到該帖子下的所有內(nèi)容。

          網(wǎng)絡(luò)爬蟲(chóng)技術(shù)最廣泛的應(yīng)用是在搜索引擎中,如百度、Google、Bing 等,它完成了搜索過(guò)程中的最關(guān)鍵的步驟,即網(wǎng)頁(yè)內(nèi)容的抓取。下圖為簡(jiǎn)單搜索引擎原理圖。

          網(wǎng)絡(luò)爬蟲(chóng)的作用,我總結(jié)為以下幾點(diǎn):

          • 輿情分析:企業(yè)或政府利用爬取的數(shù)據(jù),采用數(shù)據(jù)挖掘的相關(guān)方法,發(fā)掘用戶討論的內(nèi)容、實(shí)行事件監(jiān)測(cè)、輿情引導(dǎo)等。
          • 企業(yè)的用戶分析:企業(yè)利用網(wǎng)絡(luò)爬蟲(chóng),采集用戶對(duì)其企業(yè)或商品的看法、觀點(diǎn)以及態(tài)度,進(jìn)而分析用戶的需求、自身產(chǎn)品的優(yōu)劣勢(shì)、顧客抱怨等。
          • 科研工作者的必備技術(shù):現(xiàn)有很多研究都以網(wǎng)絡(luò)大數(shù)據(jù)為基礎(chǔ),而采集網(wǎng)絡(luò)大數(shù)據(jù)的必備技術(shù)便是網(wǎng)絡(luò)爬蟲(chóng)。利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)采集的數(shù)據(jù)可用于研究產(chǎn)品個(gè)性化推薦、文本挖掘、用戶行為模式挖掘等。

          網(wǎng)絡(luò)爬蟲(chóng)涉及的領(lǐng)域包括:

          網(wǎng)絡(luò)爬蟲(chóng)的基本概念

          網(wǎng)絡(luò)爬蟲(chóng)(Web Crawler),又稱為網(wǎng)絡(luò)蜘蛛(Web Spider)或 Web 信息采集器,是一種按照一定規(guī)則,自動(dòng)抓取或下載網(wǎng)絡(luò)信息的計(jì)算機(jī)程序或自動(dòng)化腳本,是目前搜索引擎的重要組成部分。

          • 狹義上理解:利用標(biāo)準(zhǔn)的 HTTP 協(xié)議,根據(jù)網(wǎng)絡(luò)超鏈接(如https://www.baidu.com/)和 Web 文檔檢索的方法(如深度優(yōu)先)遍歷萬(wàn)維網(wǎng)信息空間的軟件程序。
          • 功能上理解:確定待爬的 URL 隊(duì)列,獲取每個(gè) URL 對(duì)應(yīng)的網(wǎng)頁(yè)內(nèi)容(如 HTML/JSON),解析網(wǎng)頁(yè)內(nèi)容,并存儲(chǔ)對(duì)應(yīng)的數(shù)據(jù)。

          網(wǎng)絡(luò)爬蟲(chóng)的分類

          網(wǎng)絡(luò)爬蟲(chóng)按照系統(tǒng)架構(gòu)和實(shí)現(xiàn)技術(shù),大致可以分為以下幾種類型:通用網(wǎng)絡(luò)爬蟲(chóng)(General Purpose Web Crawler)、聚焦網(wǎng)絡(luò)爬蟲(chóng)(Focused Web Crawler)、增量式網(wǎng)絡(luò)爬蟲(chóng)(Incremental Web Crawler)、深層網(wǎng)絡(luò)爬蟲(chóng)(Deep Web Crawler)。實(shí)際的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)通常是幾種爬蟲(chóng)技術(shù)相結(jié)合實(shí)現(xiàn)的。

          • 通用網(wǎng)絡(luò)爬蟲(chóng):爬行對(duì)象從一些種子 URL 擴(kuò)充到整個(gè) Web,主要為門戶站點(diǎn)搜索引擎和大型 Web 服務(wù)提供商采集數(shù)據(jù)
          • 通用網(wǎng)絡(luò)爬蟲(chóng)的爬取范圍和數(shù)量巨大,對(duì)于爬行速度和存儲(chǔ)空間要求較高,對(duì)于爬行頁(yè)面的順序要求較低,通常采用并行工作方式,有較強(qiáng)的應(yīng)用價(jià)值。
          • 聚焦網(wǎng)絡(luò)爬蟲(chóng),又稱為主題網(wǎng)絡(luò)爬蟲(chóng):是指選擇性地爬行那些與預(yù)先定義好的主題相關(guān)的頁(yè)面。
          • 和通用爬蟲(chóng)相比,聚焦爬蟲(chóng)只需要爬行與主題相關(guān)的頁(yè)面,極大地節(jié)省了硬件和網(wǎng)絡(luò)資源,保存的頁(yè)面也由于數(shù)量少而更新快,可以很好地滿足一些特定人群對(duì)特定領(lǐng)域信息的需求。
          • 通常在設(shè)計(jì)聚焦網(wǎng)絡(luò)爬蟲(chóng)時(shí),需要加入鏈接和內(nèi)容篩選模塊。一個(gè)常見(jiàn)的案例是基于關(guān)鍵字獲取符合用戶需求的數(shù)據(jù),如下圖所示:


          • 增量網(wǎng)絡(luò)爬蟲(chóng):對(duì)已下載網(wǎng)頁(yè)采取增量式更新和只爬行新產(chǎn)生的或者已經(jīng)發(fā)生變化網(wǎng)頁(yè)的爬蟲(chóng),它能夠在一定程度上保證所爬行的頁(yè)面是盡可能新的頁(yè)面,歷史已經(jīng)采集過(guò)的頁(yè)面不重復(fù)采集。
          • 增量網(wǎng)絡(luò)爬蟲(chóng)避免了重復(fù)采集數(shù)據(jù),可以減小時(shí)間和空間上的耗費(fèi)。通常在設(shè)計(jì)網(wǎng)絡(luò)爬蟲(chóng)時(shí),需要在數(shù)據(jù)庫(kù)中,加入時(shí)間戳,基于時(shí)間戳上的先后,判斷程序是否繼續(xù)執(zhí)行。
          • 常見(jiàn)的案例有:論壇帖子評(píng)論數(shù)據(jù)的采集(如下圖所示論壇的帖子,它包含400多頁(yè),每次啟動(dòng)爬蟲(chóng)時(shí),只需爬取最近幾天用戶所發(fā)的帖子);天氣數(shù)據(jù)的采集;新聞數(shù)據(jù)的采集;股票數(shù)據(jù)的采集等。


          • Deep Web 爬蟲(chóng):指大部分內(nèi)容不能通過(guò)靜態(tài)鏈接獲取,只有用戶提交一些表單信息才能獲取的 Web 頁(yè)面。例如,需要模擬登陸的網(wǎng)絡(luò)爬蟲(chóng)便屬于這類網(wǎng)絡(luò)爬蟲(chóng)。另外,還有一些需要用戶提交關(guān)鍵詞才能獲取的內(nèi)容,如京東淘寶提交關(guān)鍵字、價(jià)格區(qū)間獲取產(chǎn)品的相關(guān)信息。


          網(wǎng)絡(luò)爬蟲(chóng)的流程

          網(wǎng)絡(luò)爬蟲(chóng)基本流程可用下圖描述:

          具體流程為:

          1. 需求者選取一部分種子 URL(或初始 URL),將其放入待爬取的隊(duì)列中。如在 Java 網(wǎng)絡(luò)爬蟲(chóng)中,可以放入 LinkedList 或 List 中。
          2. 判斷 URL 隊(duì)列是否為空,如果為空則結(jié)束程序的執(zhí)行,否則執(zhí)行第三步驟。
          3. 從待爬取的 URL 隊(duì)列中取出待爬的一個(gè) URL,獲取 URL 對(duì)應(yīng)的網(wǎng)頁(yè)內(nèi)容。在此步驟需要使用響應(yīng)的狀態(tài)碼(如200,403等)判斷是否獲取數(shù)據(jù),如響應(yīng)成功則執(zhí)行解析操作;如響應(yīng)不成功,則將其重新放入待爬取隊(duì)列(注意這里需要移除無(wú)效 URL)。
          4. 針對(duì)已經(jīng)響應(yīng)成功后獲取到的數(shù)據(jù),執(zhí)行頁(yè)面解析操作。此步驟根據(jù)用戶需求獲取網(wǎng)頁(yè)內(nèi)容里的部分?jǐn)?shù)據(jù),如汽車論壇帖子的標(biāo)題、發(fā)表的時(shí)間等。
          5. 針對(duì)3步驟已解析的數(shù)據(jù),將其進(jìn)行存儲(chǔ)。

          網(wǎng)絡(luò)爬蟲(chóng)的爬行策略

          一般的網(wǎng)絡(luò)爬蟲(chóng)的爬行策略分為兩種:深度優(yōu)先搜索(Depth-First Search)策略、廣度優(yōu)先搜索(Breadth-First Search)策略。

          • 深度優(yōu)先搜索策略:從根節(jié)點(diǎn)的 URL 開(kāi)始,根據(jù)優(yōu)先級(jí)向下遍歷該根節(jié)點(diǎn)對(duì)應(yīng)的子節(jié)點(diǎn)。當(dāng)訪問(wèn)到某一子節(jié)點(diǎn) URL 時(shí),以該子節(jié)點(diǎn)為入口,繼續(xù)向下層遍歷,直到?jīng)]有新的子節(jié)點(diǎn)可以繼續(xù)訪問(wèn)為止。接著使用回溯的方法,找到?jīng)]有被訪問(wèn)到的節(jié)點(diǎn),以類似的方式進(jìn)行搜索。下圖給出了理解深度優(yōu)先搜索的一個(gè)簡(jiǎn)單案例:


          • 廣度優(yōu)先搜索策略:也稱為寬度優(yōu)先,是另外一種非常有效的搜索技術(shù),這種方法按照層進(jìn)行遍歷頁(yè)面。下圖可幫助理解廣度優(yōu)先搜索的遍歷方式:


          基于廣度優(yōu)先的爬蟲(chóng)是最簡(jiǎn)單的爬取網(wǎng)站頁(yè)面的方法,也是目前使用較為廣泛的方法。在本達(dá)人課中,所講的案例皆為寬度優(yōu)先式的爬蟲(chóng)。

          學(xué)習(xí)建議

          網(wǎng)絡(luò)爬蟲(chóng)是入門某一門編程語(yǔ)言的實(shí)戰(zhàn)技術(shù):很多學(xué)習(xí)編程語(yǔ)言(如 Java、Python 或 C++ 等)的同學(xué),采用的方式只看書(shū)或在網(wǎng)絡(luò)上看一些視頻,而這將導(dǎo)致的后果就是面對(duì)一個(gè)具體項(xiàng)目時(shí),不知道如何上手,尤其對(duì)新手而言?;蛘撸欢螘r(shí)間后,就將之前的書(shū)本內(nèi)容或視頻內(nèi)容遺忘了。

          為此,我建議這些學(xué)習(xí)者可采用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)入門某一門編程語(yǔ)言(如 Java、Python)。因?yàn)榕老x(chóng)技術(shù)是個(gè)綜合性很強(qiáng)的技術(shù),涉及到編程語(yǔ)言的很多方面。本達(dá)人課特別選用了 Java 作為開(kāi)發(fā)語(yǔ)言,將帶大家深入了解 Java 網(wǎng)絡(luò)爬蟲(chóng)背后的核心技術(shù)。學(xué)完該課程,相信您也已很好地入門 Java 編程語(yǔ)言。

          對(duì)于零基礎(chǔ)入門 Java 網(wǎng)絡(luò)爬蟲(chóng)的同學(xué),在學(xué)習(xí)過(guò)程中請(qǐng)注意以下幾點(diǎn):

          • 理解爬蟲(chóng)的基本原理。
          • 學(xué)習(xí) Java 網(wǎng)絡(luò)爬蟲(chóng)涉及的基礎(chǔ)知識(shí):基礎(chǔ)不牢,地動(dòng)山搖,學(xué)習(xí)和掌握網(wǎng)絡(luò)爬蟲(chóng)的基礎(chǔ)知識(shí)很重要。
          • 吃透基本的爬蟲(chóng)代碼,并在此基礎(chǔ)上進(jìn)行改寫(xiě)。
          • 不斷實(shí)戰(zhàn),發(fā)現(xiàn)爬蟲(chóng)中涉及的新問(wèn)題,并解決問(wèn)題。

          最后,提供一些書(shū)籍和資料,給入門以及想深入學(xué)習(xí) Java 網(wǎng)絡(luò)爬蟲(chóng)的讀者:

          1. 《Java面向?qū)ο蟪绦蛟O(shè)計(jì)》(耿祥義、張躍平編著),由清華大學(xué)出版社出版,這是大學(xué)的教材,可作為基礎(chǔ)學(xué)習(xí)。
          2. 《Java核心技術(shù)》全2冊(cè)。
          3. 《Effective Java (3rd Edition)》:目前英文版已是第三版,中文版還在第二版,該書(shū)是 Java 進(jìn)階必備之書(shū),英文比較好的同學(xué)可直接看英文版。
          4. 《自己動(dòng)手寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)》(羅剛編著),國(guó)內(nèi)第一本專門講解 Java 網(wǎng)絡(luò)爬蟲(chóng)的書(shū)籍。

          第02課:Java 網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)知識(shí)

          引言

          Java 網(wǎng)絡(luò)爬蟲(chóng)具有很好的擴(kuò)展性可伸縮性,其是目前搜索引擎開(kāi)發(fā)的重要組成部分。例如,著名的網(wǎng)絡(luò)爬蟲(chóng)工具 Nutch 便是采用 Java 開(kāi)發(fā),該工具以 Apache Hadoop 數(shù)據(jù)結(jié)構(gòu)為依托,提供了良好的批處理支持。

          Java 網(wǎng)絡(luò)爬蟲(chóng)涉及到 Java 的很多知識(shí)。本篇中將會(huì)介紹網(wǎng)絡(luò)爬蟲(chóng)中需要了解的 Java 知識(shí)以及這些知識(shí)主要用于網(wǎng)絡(luò)爬蟲(chóng)的哪一部分,具體包括以下內(nèi)容:

          • Maven 的使用;
          • log4j 的使用;
          • 對(duì)象的創(chuàng)建;
          • 集合的使用;
          • 正則表達(dá)式的使用;
          • HTTP 狀態(tài)碼;
          • 其他。

          Maven 的使用

          Maven 是什么

          Maven 是由 Apache 軟件基金會(huì)所提供一款工具,用于項(xiàng)目管理及自動(dòng)構(gòu)建。我們知道在構(gòu)建一個(gè) Java 工程時(shí),需要使用到很多 Jar 包,例如操作數(shù)據(jù)庫(kù)需要使用到 mysql-connector-java 以及其相關(guān)依賴的 Jar 包。而 Maven 工具便可以很方便的對(duì)我們?cè)陧?xiàng)目中使用到的開(kāi)源 Jar 包,進(jìn)行很好的管理,比如下載某 Java 工程需要的 Jar 包及相關(guān)依賴 Java 包。

          Maven 如何使用

          Maven 使用項(xiàng)目對(duì)象模型(Project Object Model,POM)來(lái)配置,項(xiàng)目對(duì)象模型存儲(chǔ)在名為 pom.xml 的文件中。以 Java 為例,我們可以在 Eclipse 中創(chuàng)建一個(gè) Maven 工程。其中,Maven Dependencies 便存放著由 Maven 管理的 Jar 包。

          正如前面所說(shuō),構(gòu)建一個(gè) Java 工程需要使用很多 Jar 包,比如,在 Java 網(wǎng)絡(luò)爬蟲(chóng)中,我們需要用到數(shù)據(jù)庫(kù)連接、請(qǐng)求網(wǎng)頁(yè)內(nèi)容、解析網(wǎng)頁(yè)內(nèi)容的相關(guān) Jar 包時(shí),我們可以在上圖所示的 pom 文件中添加如下語(yǔ)句:

          <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version></dependency><dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version> 1.8.2</version></dependency><dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient </artifactId> <version> 4.2.3</version></dependency>

          之后,我們會(huì)驚訝地發(fā)現(xiàn),工程的 Maven Dependencies 中自動(dòng)下載了相關(guān) Jar 包以及其依賴的 Jar 包。

          讀者可以在 Maven Repository 網(wǎng)站中檢索自己想要的 Jar 包,以及 Maven 操作語(yǔ)句。

          log4j 的使用

          log4j 是什么

          log4j 是一個(gè)基于 Java 的日志記錄工具,曾是 Apache 軟件基金會(huì)的一個(gè)項(xiàng)目。目前,日志是應(yīng)用軟件中不可或缺的部分。

          log4j 怎么使用

          1. 使用 Maven 下載 log4j 的 Jar 包,代碼如下:

          <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>

          2. 在 src 目錄下創(chuàng)建 log4j.properties 文本文件,并做相關(guān)配置(關(guān)于每個(gè)配置的具體含義,讀者可參考博文 《詳細(xì)的 Log4j 使用教程》):

          ### 設(shè)置###log4j.rootLogger = debug,stdout,D,E### 輸出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 輸出DEBUG 級(jí)別以上的日志到=error.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = E://logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 輸出ERROR 級(jí)別以上的日志到=error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File =E://logs/error.log log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

          3. 實(shí)例程序,如下所示:

          package log4j;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class Test { static final Log logger = LogFactory.getLog(Test.class); public static void main(String[] args) { System.out.println("hello"); logger.info("hello world"); logger.debug("This is debug message."); logger.warn("This is warn message."); logger.error("This is error message."); }}

          基于此程序,我們就可以看到在我們工程的根目錄下會(huì)產(chǎn)生一個(gè)日志文件 error.log 和 log.log。

          在網(wǎng)絡(luò)爬蟲(chóng)中,我們可以使用日志記錄程序可能出錯(cuò)的地方,監(jiān)控程序的運(yùn)行狀態(tài)。

          對(duì)象的創(chuàng)建

          在 Java 中,經(jīng)常使用 new 關(guān)鍵字來(lái)創(chuàng)建一個(gè)對(duì)象。例如,在爬取京東商品的id、product_name(商品名稱)、price(價(jià)格)時(shí),我們需要將每個(gè)商品的信息封裝到對(duì)象里。

          JdInfoModel jingdongproduct = new JdInfoModel();

          在爬蟲(chóng)中,我們要操作 JdInfoModel 類中的變量(即id、product_name、price),可以使用 private 變量定義的方式。并且,使用 set() 與 get() 方法對(duì)數(shù)據(jù)進(jìn)行設(shè)置(爬取數(shù)據(jù)的封裝)和獲取使用(爬取數(shù)據(jù)的存儲(chǔ))。下面的代碼為 JdInfoModel 類:

          package model;public class JdInfoModel { private int id; private String product_name; private double price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getProduct_name() { return product_name; } public void setProduct_name(String product_name) { this.product_name = product_name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } }

          集合的使用

          網(wǎng)絡(luò)爬蟲(chóng)離不開(kāi)對(duì)集合的操作,這里涉及到 List、Set、Queue、Map 等集合的操作。

          List 和 Set 集合的使用

          List 的特征是其元素以線性方式存儲(chǔ),集合中可以存放重復(fù)對(duì)象。對(duì)比而言,Set 集合中的對(duì)象不按特定的方式排序,并且沒(méi)有重復(fù)對(duì)象。在網(wǎng)絡(luò)爬蟲(chóng)中,可以使用 List<String> 存儲(chǔ)待爬的 URL 列表。例如:

          //List集合的創(chuàng)建List<String> urllist = new ArrayList<String>();urllist.add("https://movie.douban.com/subject/27608425");urllist.add("https://movie.douban.com/subject/26968024");//第一種遍歷方式for( String url : urllist ){ System.out.println(url);}//第二種遍歷方式for( int i=0; i<urllist.size(); i++ ){ System.out.println(i+":"+urllist.get(i));}//第三種遍歷方式Iterator<String> it = urllist.iterator();while ( it.hasNext() ){ System.out.println(it.next());}

          同時(shí)我們也可以使用上面 List<JdInfoModel> 來(lái)封裝具體的實(shí)例,即爬蟲(chóng)所采集到的數(shù)據(jù)。Set 集合的使用與 List 集合類似,這里就不過(guò)多講解了。

          Map 的使用

          Map 是一種把鍵對(duì)象和值對(duì)象進(jìn)行映射的集合,它的每一個(gè)元素都包含一對(duì)鍵對(duì)象和值對(duì)象,其中鍵對(duì)象不可以重復(fù)。Map 不僅在網(wǎng)絡(luò)爬蟲(chóng)中常用,也常在文本挖掘算法的編寫(xiě)中使用。在網(wǎng)絡(luò)爬蟲(chóng)中,可以使用 Map 過(guò)濾一些重復(fù)數(shù)據(jù),但并建議使用 Map 對(duì)大規(guī)模數(shù)據(jù)去重過(guò)濾,原因是 Map 有空間大小的限制。比如,使用網(wǎng)絡(luò)爬蟲(chóng)爬取帖子時(shí),可能遇到置頂帖,而置頂帖可能會(huì)與下面的帖子重復(fù)出現(xiàn)。以下程序?yàn)?Map 的使用案例:

          //Map的創(chuàng)建Map<String,Integer> map = new HashMap<String,Integer>();//值的添加,這里假設(shè)是爬蟲(chóng)中的產(chǎn)品id以及每個(gè)產(chǎn)品id對(duì)應(yīng)的銷售量map.put("jd1515", 100);map.put("jd1516", 300);map.put("jd1515", 100);map.put("jd1517", 200);map.put("jd1518", 100);//第一種方法遍歷for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value); } //第二種方法遍歷Iterator<Entry<String, Integer>> entries = map.entrySet().iterator(); while (entries.hasNext()) { Entry<String, Integer> entry = entries.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } //第三種方法遍歷for (Entry<String, Integer> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }

          Queue 的使用

          隊(duì)列(Queue)使用鏈表結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),是一種特殊的線性表,它只允許在表的前端進(jìn)行刪除操作,而在表的后端進(jìn)行插入操作。LinkedList 類實(shí)現(xiàn)了 Queue 接口,因此我們可以把 LinkedList 當(dāng)成 Queue 來(lái)用。Queue 常用來(lái)存待爬 URL 隊(duì)列。

          Queue<String> queue = new LinkedList<String>();//添加元素queue.offer("https://www.douban.com/people/46077896/likes/topic/");queue.offer("https://www.douban.com/people/1475408/likes/topic");queue.offer("https://www.douban.com/people/3853295/likes/topic/");boolean t = true;while (t) { //如果Url隊(duì)列為空,停止執(zhí)行程序,否則請(qǐng)求Url if( queue.isEmpty() ){ t = false; }else { //請(qǐng)求的url String url = queue.poll(); System.out.println(url); //這里要寫(xiě)請(qǐng)求數(shù)據(jù),獲取相應(yīng)狀態(tài)碼,如果狀態(tài)碼為200,則解析數(shù)據(jù);如果為404,url移除隊(duì)列;否則該url重新如列 }

          正則表達(dá)式的使用

          正則表達(dá)式,是在解析數(shù)據(jù)(HTML 或 JSON 等)時(shí),常用的方法。舉個(gè)列子,我想從下面的語(yǔ)句中提取用戶的 id(75975500):

          <a target="_blank" class="linkblack">尊少來(lái)自沈陽(yáng)</a>

          后面,我會(huì)介紹解析工具 jsoup,其可以解析獲得“//i.autohome.com.cn/75975500”。接著,便可以使用正則表達(dá)式提取 75975500。

          String url = "http://i.autohome.com.cn/75975500";String user_id = url.replaceAll("\D", ""); //取代所有的非數(shù)字字符System.out.println(user_id); //輸出的結(jié)果即為75975500

          如下表所示,是 Java 中一些常用的基本正則表達(dá)式。

          正則表達(dá)式寫(xiě)法含義\d代表0-9的任意數(shù)字\D代表任何非數(shù)字字符\s代表空格類字符\S代表非空格類字符\p{Lower}代表小寫(xiě)字母[a-z]\p{Upper}代表大寫(xiě)字母[A-Z]\p{Alpha}代表字母\p{Blank}代表空格或制表符

          HTTP 狀態(tài)碼

          當(dāng)瀏覽者訪問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),瀏覽者的瀏覽器會(huì)向網(wǎng)頁(yè)所在服務(wù)器發(fā)出請(qǐng)求。當(dāng)瀏覽器接收并顯示網(wǎng)頁(yè)前,此網(wǎng)頁(yè)所在的服務(wù)器會(huì)返回一個(gè)包含 HTTP 狀態(tài)碼的信息頭(Server Header)用以響應(yīng)瀏覽器的請(qǐng)求。在網(wǎng)絡(luò)爬蟲(chóng)向后臺(tái)請(qǐng)求一個(gè) URL 地址時(shí),便會(huì)返回狀態(tài)碼,該狀態(tài)碼中包含豐富的信息。例如,200表示請(qǐng)求成功,成功獲取到了后臺(tái)傳的數(shù)據(jù)(HTML 或 JSON 等);301資源(網(wǎng)頁(yè)等)被永久轉(zhuǎn)移到其它 URL;404請(qǐng)求的資源(網(wǎng)頁(yè)等)不存在等。以下是 HTTP 狀態(tài)碼的分類。

          分類描述1**信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作。2**成功,操作被成功接收并處理。3**重定向,需要進(jìn)一步的操作以完成請(qǐng)求。4**客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求。5**服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤。

          詳細(xì)的 HTTP 狀態(tài)碼列表,讀者可以參考這個(gè)地址。

          其他

          另外,網(wǎng)絡(luò)爬蟲(chóng)還涉及到其他方面的 Java 知識(shí),比如說(shuō)Java 輸入輸出流、Java 操作數(shù)據(jù)庫(kù)、Java 多線程操作、Java 對(duì)日期的處理、Java 中的接口與繼承。所以,以網(wǎng)絡(luò)爬蟲(chóng),入門 Java 編程是非常好的方式。在后面的課程中,我會(huì)介紹網(wǎng)絡(luò)爬蟲(chóng)如何使用這些技術(shù)。


          上一篇:HTML 元素
          下一篇:HTML 符號(hào)
          主站蜘蛛池模板: 国内精自品线一区91| 一区二区三区精品高清视频免费在线播放 | 亚洲日韩国产一区二区三区| 鲁大师成人一区二区三区| 亚洲国产一区二区三区青草影视| 人妻av综合天堂一区| 久久综合九九亚洲一区| 一区二区三区免费电影| 无码一区二区三区中文字幕| 无码人妻精品一区二区三| 国产成人久久精品麻豆一区| 精品国产免费观看一区| 国产精品视频一区二区三区经 | 极品尤物一区二区三区| 久久久久久综合一区中文字幕| 福利一区福利二区| 国产精品亚洲一区二区无码| 搡老熟女老女人一区二区| 国产情侣一区二区三区| 日韩精品一区二区三区影院| 深田咏美AV一区二区三区| 精品黑人一区二区三区| 日本高清不卡一区| 亲子乱AV视频一区二区| 538国产精品一区二区在线| 国产伦精品一区二区三区视频小说| 亚洲毛片不卡av在线播放一区| 人妻久久久一区二区三区 | 无码日韩精品一区二区免费| 熟妇人妻AV无码一区二区三区| 少妇人妻偷人精品一区二区| 波多野结衣一区二区三区aV高清| 国产在线观看精品一区二区三区91 | 久久国产精品免费一区二区三区| 国产亚洲福利精品一区二区| 国产成人精品视频一区| 精品视频一区在线观看| 免费一区二区三区四区五区| 日本一区午夜爱爱| 精品一区二区三区在线观看| av在线亚洲欧洲日产一区二区|