Jsoup在Android的使用(一)

        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來獲取我們想要的數據了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章