日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
阿粉教你如何使用爬蟲來對(duì)比某東上的數(shù)據(jù)

本文轉(zhuǎn)載自微信公眾號(hào)「Java極客技術(shù)」,作者鴨血粉絲。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java極客技術(shù)公眾號(hào)。

成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、吉木薩爾網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為吉木薩爾等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

自從阿粉經(jīng)歷過上次的大數(shù)據(jù)殺熟事件之后,明顯感覺現(xiàn)在的平臺(tái)對(duì)于用戶非常的不友好呀,只要你高頻的搜索某些關(guān)鍵詞的同時(shí),卻往往是越對(duì)比,直接就買在了最高峰,就和買股票一樣,每次總感覺能抄底,殊不知買在了天臺(tái)。于是阿粉想了個(gè)辦法,把所有的數(shù)據(jù)扒拉下來,我自己做對(duì)比,也不去搜索了,省的平臺(tái)上總是根據(jù)我的搜索內(nèi)容去進(jìn)行推薦。

Java如何做爬蟲

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

Jsoup

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

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

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

 
 
 
 
  1. String html = "First parse"
  2.   + "

    Parsed HTML into a doc.

    ";
  3.   
  4. Document doc = Jsoup.parse(html);

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

輸出內(nèi)容:

 
 
 
 
  1.  
  2.   First parse
  3.  
  4.  
  5.   

    Parsed HTML into a doc.

  6.  

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

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

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

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

 
 
 
 
  1. public static void main(String[] args) {
  2.        try {
  3.            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();
  4.            String title = doc.title();
  5.            System.out.println(title);
  6.        }catch (IOException e){
  7.            e.printStackTrace();
  8.        }
  9.    }

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

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

Element

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

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

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

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

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

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

 
 
 
 
  1.     
  2.         879.00
  3.     

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

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

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

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

如果你還有興趣的話,你可以直接在for循環(huán)里面新建一個(gè)對(duì)象,弄一個(gè)List集合,然后在最后的的時(shí)候,執(zhí)行一下插入數(shù)據(jù)庫(kù)的方法,這樣是不是就能完整的把數(shù)據(jù)都保存下來了呢?

寫在最后

為什么阿粉介紹爬取某東,而不去爬取某寶,因?yàn)槟硸|是允許你爬取我的數(shù)據(jù)的,他沒有做任何的反扒機(jī)制,而某寶則不行,正是應(yīng)了那句話

“某東:我賣的是真貨,你說我騙人,我賠給你,某寶:我賣假貨,但是我不承認(rèn),你能拿我怎么辦?某多多:親,假一賠十,結(jié)果發(fā)過來11件假貨,”


文章題目:阿粉教你如何使用爬蟲來對(duì)比某東上的數(shù)據(jù)
當(dāng)前URL:http://www.dlmjj.cn/article/dhhispc.html