溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)

發(fā)布時(shí)間:2021-12-24 17:35:47 來(lái)源:億速云 閱讀:170 作者:iii 欄目:安全技術(shù)

本篇內(nèi)容介紹了“怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Java如何做爬蟲(chóng)

大家在想到爬蟲(chóng)的時(shí)候,一定想說(shuō),爬蟲(chóng),這東西不是學(xué)Python的人員才能做的么?我們Java能做呢?阿粉想告訴大家的是,可以,Java語(yǔ)言這么多年,歷時(shí)這么久,怎么可能沒(méi)有這些內(nèi)容呢,于是阿粉就開(kāi)始了學(xué)習(xí)了  Java 的爬蟲(chóng)道路。

Jsoup

阿粉在介紹這個(gè)類之前,肯定先得說(shuō)說(shuō)我們通??吹降膬?nèi)容是由什么組成的,現(xiàn)在比如說(shuō)我們做開(kāi)發(fā)的都知道,至少我們?cè)陔娔X端訪問(wèn)某東,某寶的數(shù)據(jù)的時(shí)候,他們給我們反饋的數(shù)據(jù)都是通過(guò)  HTML 來(lái)進(jìn)行展示的,比如說(shuō)這個(gè)樣子:

怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)

在開(kāi)發(fā)的肯定都是知道,這些都是些什么意思,阿粉在這里我們就不再進(jìn)行詳細(xì)的介紹,說(shuō)這個(gè) HTML 到底是個(gè)啥東西了,阿粉需要介紹的是 Jsoup  ,然后告訴大家怎么使用 Jsoup 這個(gè)類爬取京東的數(shù)據(jù)。

正如官方文檔所給我們提示的內(nèi)容,怎么去解析一段 HTML 代碼 :

String html = "<html><head><title>First parse</title></head>"   + "<body><p>Parsed HTML into a doc.</p></body></html>";    Document doc = Jsoup.parse(html);

而這個(gè) Document是什么呢?我們可以輸出一下看一眼,順帶著看看源碼解釋,畢竟嘛,開(kāi)發(fā)人員不看這個(gè)類是干嘛的,就不是個(gè)合格的程序員不是,

輸出內(nèi)容:

<html>  <head>   <title>First parse</title>  </head>  <body>   <p>Parsed HTML into a doc.</p>  </body> </html>

其實(shí)可以看出這里,Document實(shí)際上是給我們輸出了一個(gè)新的文檔,而且是整理之后的,相當(dāng)于為之后的分析 HTML 做了專業(yè)的準(zhǔn)備。

怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)

而我們?cè)诳丛创a的注釋的時(shí)候,不難看出,Jsoup不單單是能解析我們給的這個(gè)字符串,還可以是一個(gè)URL,也可以是一個(gè)文件。

它把我們給他的 HTML 字符串轉(zhuǎn)換成了一個(gè)對(duì)象,這個(gè)對(duì)象就是我們上面看到的 Document,然后我們就可以順利成章的去使用 Document  對(duì)象里面的元素了。

上面是解析字符串,那我們看下面這個(gè)解析 URL 的存在:

public static void main(String[] args) {        try {            Document doc = Jsoup.connect("https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_f38cf584e9fb4328a3e0d2bb515e1458").get();            String title = doc.title();            System.out.println(title);        }catch (IOException e){            e.printStackTrace();        }    }

大家執(zhí)行以下的話,就一定能夠看到這個(gè) title 到底是什么,而結(jié)果是這個(gè)樣子的:

怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)

和我們?cè)诎俣人阉鞯臅r(shí)候是不是不太一樣了,因?yàn)檫@個(gè)是進(jìn)入之后的主頁(yè)。

Element

而在我們看源碼的時(shí)候,我們能清晰的看到,Document 是繼承了 Element 的類,那么必然可以調(diào)用 Element 里面的方法,比如說(shuō):

getElementById(String id); //是不是有點(diǎn)眼熟,像不像Js里面的ID選擇器  getElementsByTag(String tagName);// 通過(guò)標(biāo)簽來(lái)選擇  getAllElements();//獲取所有的Element的元素

關(guān)于方法,阿粉就不再一一的進(jìn)行敘述了,大家有興趣的可以去看看官方文檔,或者去看看這個(gè)源碼,包名送上 package org.jsoup.nodes

有人肯定開(kāi)始煩了,說(shuō)阿粉,你就別介紹了,那你說(shuō)了太多廢話了,趕緊介紹爬京東,好的,這就開(kāi)始,

我們?cè)谂廊≈翱隙ㄏ确治鼍〇|的網(wǎng)址,比如說(shuō)我搜索硬盤:

怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)

下面就出來(lái)了一堆數(shù)據(jù),而我們則需要解析的就是在 HTML 種最有用的那一部分,比如:

<div class="p-price">     <strong class="J_54994027563" data-done="1">         <em>¥</em><i>879.00</i>     </strong> </div>

在這里我們就記下了這個(gè)價(jià)格,然后我們?nèi)フ椅覀円拿?/p>

怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)

看,p-name就是我們需要的名字,那么我們就可以寫代碼了。

//這是京東的搜索網(wǎng)址,我們把這個(gè)keyword關(guān)鍵詞提取出來(lái),注意中英文,中文要處理一下    String url = "https://search.jd.com/Search?keyword=" + keyword;    url = url + "&enc=utf-8";    Document document = Jsoup.parse(new URL(url), 40000);       //我們先找這個(gè) List,然后一層一層的遍歷    Element element = document.getElementById("J_goodsList");    Elements elements = element.getElementsByTag("li");    for (Element el : elements) {        String img = el.getElementsByTag("img").eq(0).attr("source-data-lazy-img");        String price = el.getElementsByClass("p-price").eq(0).text();        String title = el.getElementsByClass("p-name").eq(0).text();        String shop = el.getElementsByClass("p-shop").eq(0).text();           System.out.println("=========================");           System.out.println("標(biāo)題:" + title);           System.out.println("圖片url:" + img);           System.out.println("店鋪:" + shop);           System.out.println("價(jià)格:" + price);     }

大家看執(zhí)行的效果圖:

怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)

“怎么使用Java爬蟲(chóng)來(lái)對(duì)比某東上的數(shù)據(jù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI