使用Java學習網頁爬蟲

關於爬蟲的有效連接:html

https://blog.csdn.net/ccg_201216323/article/details/53576654java

http://www.cnblogs.com/Jims2016/p/5877300.html正則表達式

https://blog.csdn.net/zhengshidao/article/details/72845794json

 

系列文檔的連接網頁爬蟲

https://blog.csdn.net/qy20115549/article/details/52203722瀏覽器

有關網頁爬蟲的幾個重要文件說明。服務器

網絡爬蟲基礎學習篇網絡

網絡爬蟲的爬行策略分爲深度優先(每一步一直走到最底層)和廣度優先(一層一層的走)maven

跟網頁有什麼關係ide

爬蟲的通常步驟

首先是給定一個待爬取的URL隊列,而後經過抓包的方式,獲取數據的真實請求地址。接着採用httpclient模擬瀏覽器將相應的數據抓取下來(通常是html文件或者是json數據)。因爲網頁中的內容不少,很複雜,不少內容並非咱們須要的,因此咱們須要對其進行解析。針對html的解析很簡單,經過Jsoup(Dom解析工具)、正則表達式即可完成。針對Json數據的解析,這裏我建議一款快速解析工具fastjson(阿里開源的一個工具)

(1)網絡網絡抓包,(packet capture)就是將網絡傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操做,常常被用來進行數據截取等。在針對數據響應爲Json或者須要針對須要用戶名、密碼登錄的網站,抓包顯得尤其重要,抓包也是編寫網絡爬蟲的第一步。其能夠直觀的看到數據請求的真實地址,請求方式(post、get請求),數據的類型(html仍是Json數據)

HTTP部分狀態碼的說明

HTTP狀態碼(HTTP Status Code)是用以表示網頁服務器HTTP響應狀態的3位數字代碼。當咱們打開一個網頁時,若是網頁可以返回數據,也就是說影響成功了,通常狀態響應碼都是200。固然狀態響應碼,包括不少內容,下面列舉了,狀態響應碼,及其表示的含義,其中加錯的是在爬蟲中常常遇到的: 
100:繼續 客戶端應當繼續發送請求。客戶端應當繼續發送請求的剩餘部分,或者若是請求已經完成,忽略這個響應。 
101: 轉換協議 在發送完這個響應最後的空行後,服務器將會切換到在Upgrade 消息頭中定義的那些協議。只有在切換新的協議更有好處的時候才應該採起相似措施。 
102:繼續處理 由WebDAV(RFC 2518)擴展的狀態碼,表明處理將被繼續執行。 
200:請求成功 處理方式:得到響應的內容,進行處理 
201:請求完成,結果是建立了新資源。新建立資源的URI可在響應的實體中獲得 處理方式:爬蟲中不會遇到 
202:請求被接受,但處理還沒有完成 處理方式:阻塞等待 
204:服務器端已經實現了請求,可是沒有返回新的信 息。若是客戶是用戶代理,則無須爲此更新自身的文檔視圖。 處理方式:丟棄 
300:該狀態碼不被HTTP/1.0的應用程序直接使用, 只是做爲3XX類型迴應的默認解釋。存在多個可用的被請求資源。 處理方式:若程序中可以處理,則進行進一步處理,若是程序中不能處理,則丟棄 
301:請求到的資源都會分配一個永久的URL,這樣就能夠在未來經過該URL來訪問此資源 處理方式:重定向到分配的URL 
302:請求到的資源在一個不一樣的URL處臨時保存 處理方式:重定向到臨時的URL 
304:請求的資源未更新 處理方式:丟棄 
400:非法請求 處理方式:丟棄 
401:未受權 處理方式:丟棄 
403:禁止 處理方式:丟棄 
404:沒有找到 處理方式:丟棄 
500:服務器內部錯誤 服務器遇到了一個不曾預料的情況,致使了它沒法完成對請求的處理。通常來講,這個問題都會在服務器端的源代碼出現錯誤時出現。 
501:服務器沒法識別 服務器不支持當前請求所須要的某個功能。當服務器沒法識別請求的方法,而且沒法支持其對任何資源的請求。 
502:錯誤網關 做爲網關或者代理工做的服務器嘗試執行請求時,從上游服務器接收到無效的響應。 
503:服務出錯 因爲臨時的服務器維護或者過載,服務器當前沒法處理請求。這個情況是臨時的,而且將在一段時間之後恢復。

 

網絡爬蟲涉及到的Java基礎知識:

 1.Java中maven的使用。

使用maven能很輕鬆的從網絡中下載所需的插件 
及依賴(下載程序所依賴的JAR包),存儲在某一位置中,在程序編譯時自動去尋找jar包。

使用maven最大的方面,在ecliplse中建工程的時候,咱們選擇maven工程。以下圖所示,maven工程上面會有一個M的標緻,同時生成一個pom.xml文件,經過在pom.xml中加入如下類型的文件,即可把jar包引入到Maven Dependencies中。

2.log4j日誌的信息控制與文件的讀寫控制流

3.添加jsoup開始進行爬蟲實例。jsoup是個jar包,引入方法以下所示:

 跑第一個demo實例的時候,出現以下錯誤:

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)

相關文章
相關標籤/搜索