Jsoup是一款Java的html解析工具。Jsoup可能有一些同學不知道,但是,網絡爬蟲大家或多或少地都有些耳聞吧?網絡爬蟲是什麼?網絡爬蟲是一種自動爬取網頁內容的程序,可以輕鬆爬取圖文、視頻等信息。說起網絡爬蟲,用的更多的還是python爬蟲。在幾個月之前,我也體驗過python爬蟲程序,真是簡單又強大。而我們接下來要說的Jsoup,則是Java的爬蟲工具。
一.爲什麼使用Jsoup
爲什麼使用jsoup呢?或者說,我們在什麼時候使用Jsoup呢?做Android客戶端開發的同學都知道,我們app的信息大都來源於服務端。如果沒有服務端的支持,那麼我們的app很多內容都需要寫死在客戶端。這樣的話,我們的app安裝包會非常的大。當然,在正式的開發中,肯定有服務端的支持。但是,假如我們想自己寫個圖文並貌的app呢?沒有數據,怎麼辦?這時候,我們就可以在我們的app中使用Jsoup來爬點數據了。
二.Jsoup可以爬什麼
那麼,jsoup可以爬什麼數據呢?嚴格來講,什麼數據都能爬。可能使用起來沒有python那麼簡單,但是,基本你有權限爬的數據,你都可以爬到。比如,爬取csdn或者簡書等的博客。比如,爬取某網站的圖片(例如百度圖片)。比如,爬取中國天氣網的天氣預報數據。或者,爬取某些視頻網站的短視頻等。
三.Jsoup的基本使用
我寫博客,很少會扯一些廢話。一般都是開門見山的上代碼。但是這次,我想多扯點,至少讓沒有用過jsoup的同學,知道如何自己從其他的網站上爬取數據,或者說是“借”數據”、“偷”數據。接下來,我先說一下jsoup爬取數據的基本使用。
1.導入jsoup
implementation 'org.jsoup:jsoup:1.12.1'
2.建立連接
導入jsoup後,就可以使用了。首先,就是建立連接。建立什麼連接?當然是建立與你想爬數據的網頁的連接。例如,我們想爬取百度首頁的數據。那麼我們可以這麼建立連接(網絡請求不能放在主線程,可以使用rxjava,由於是demo,我就自己開個子線程了):
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
Document document = null;
String url = "https://www.baidu.com";
try {
document = Jsoup.connect(url).get();
Log.d("TTTT", "jsoup:" + document);
} catch (IOException exception) {
exception.printStackTrace();
}
}
}).start();
}
});
通過上面建立連接的操作,我們已經訪問到了百度的首頁,我們看一下logcat打印出的日誌:
接下來,我們通過chorme瀏覽器查看一下百度首頁的網頁源碼,這個應該都會吧,右鍵,選擇顯示網頁源代碼。如下圖所示,其實是與我們上面代碼的結果一樣的(我只截取了一部分,實際上很多的):
2.爬取數據
通過上一步建立連接後,我們已經拿到了網頁的所有數據,接下來,我們可以解析html來獲取我們想要的數據了。