Android實戰——jsoup實現網路爬蟲,糗事百科項目的起步

來源:互聯網
上載者:User

標籤:基礎知識   html   url   自己的   許可權   select   b2c   size   oid   

 

本篇文章包括以下內容:

  • 前言
  • jsoup的簡介
  • jsoup的配置
  • jsoup的使用
  • 結語

對於Android初學者想要做項目時,最大的煩惱是什嗎?毫無疑問是資料來源的缺乏,當然可以選擇第三方介面提供資料,也可以使用網路爬蟲擷取資料,這樣就不用第三方資料作為支援。本來是打算爬一些購物網站的資料,由於他們的反爬做得好,所以沒辦法爬到資料,只能爬取糗事百科的資料,或許聰明的你會想到可以高仿個糗事百科作為自己的練手項目,利用jsoup是完全沒問題的

jsoup的學習需要結合前端的基礎知識,爬取前端的資料,如果你學過JS,那麼你可以自己完全不用看文檔的情況下,使用該架構,因為其設計與JS的使用幾乎相同,廢話不多說,開車啦

使用項目原話:jsoup是一個Java庫來處理實際的HTML。它提供了一個非常方便的API來提取和操縱資料,使用最好的DOM,CSS和jquery-like方法

項目地址:https://github.com/jhy/jsoup
中文文檔:http://www.open-open.com/jsoup/

jsoup的配置很簡單,需要在gradle中添加以下依賴

由於jsoup需要擷取網路資料,所以記得添加網路許可權

一、擷取HTML

jsoup提供兩種網路請求,get和post,使用代碼也及其簡單,我們首先爬取糗事百科首頁的HTML。注意:由於是網路請求操作,必須放在子線程中運行,否則4.4以上的版本會報錯

① get方式

② post方式

這裡對post的參數介紹一下

  • connect:設定串連的Url
  • data:設定post的索引值對資料
  • userAgent:設定使用者代理程式(要求標頭的東西,可以判斷你是PC還是Mobile端)
  • cookie:設定緩衝
  • timeout:佈建要求逾時
  • post:發送post請求

既然已經擷取HTML的Document對象了,接下來就是分析Html元素的時候了

二、擷取Html元素

① 網頁端

以糗事百科為例子,我們查看糗事百科首頁的資料對應的Html元素是什麼,我們可以通過F12,找到對應的Html元素

可以看到一個a標籤就是文章詳情的內容,我們可以通過這個a標籤的class=”contentHerf”作為唯一標識來擷取該連結,擷取之後,繼續爬取詳情頁的文章詳細內容,所以我們通過爬取的a標籤的連結進入該文章的詳情頁

當然也有一些詳情頁有圖片的,我們可以通過圖片的的class=”thumb”作為唯一標識來爬取圖片裡面的連結

由於糗事百科採用分頁載入的情況,我們需要在爬取完第一張內容後,接著爬取第二章的內容,下面是糗事百科的分頁Url的規則,很簡單,我們可以通過一個迴圈就可以了

好了,分析完網頁端之後,就應該在我們的Android端採用代碼,將上面的步驟實現出來了

② Android端

通過上面的分析後,可以總結我們需要實現的步驟有:

  1. 爬取首頁的詳情頁url
  2. 進入詳情頁爬取內容和圖片
  3. 迴圈爬取第二頁、第三頁…

聰明的你,可能會想到第四步第五步…

  1. 封裝Bean對象
  2. 使用ListView填充內容
  3. 爬取日期、作者、評論等內容完善項目

1) 爬取首頁的詳情頁url

爬取首頁的url可以通過a標籤的class=”contentHerf”,我們通過jsoup的屬性選取器來實現,這裡會用到css知識,jsoup中文文檔也有很詳細的介紹

這裡對使用到的對象進行介紹

  • Document:相當於一個Html檔案
  • Elements:相當於一個標籤的集合
  • Element:相當於一個標籤

這裡要注意Elements與Element的toString()方法和text()方法

  • toString():列印出來的是標籤的Html內容
  • text():列印出來的是標籤對應的常值內容

css選取器

  • select():擷取符合屬性選取器要求的標籤內容
  • 或getElementById:擷取符合ID選取器要求的標籤內容
  • 或getElementsByTag:擷取符合Tag選取器要求的標籤內容

2) 進入詳情頁爬取內容和圖片

這段代碼也相當簡單,這裡就不多解釋了

3) 迴圈爬取第二頁、第三頁…

這裡只需要嵌套一個迴圈進去就可以了,完整代碼如下

4) 當然,我們爬取到的內容之後,毫無疑問就是要封裝成對象,通過ArrayList儲存起來,這樣你的資料來源就解決了

5) 後面爬取作者、日期、評論等資訊就由你們去練習了,雅思7分有多難然後介面一仿,項目就出來了

三、爬取結果

網路爬蟲雖然帶來了很多資料來源的問題,但很多網站都已經通過一些技術實現反爬蟲的效果了,所以大家還是以學習jsoup為主,不管是Android端還是Web端jsoup的用處很廣泛,所以掌握起來是必須的,聽說豆瓣和知乎都可以爬出來哦,想做項目的同學可以去試試哦

Android實戰——jsoup實現網路爬蟲,糗事百科項目的起步

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.