hi,大家好,今天我給大家分析一下java爬蟲和全文搜索引擎Elasticsearch,我的思路是首先分析用爬蟲技識訓取京東商場的資料,再將獲取的資料放入Elaticsearch中,再體驗一下全文搜索引擎的魅力(好比使用百度時,為什么我們只需要輸入幾個字,就能給我們有關這幾個字所有的內容),
這一篇文章我們先分析一下java爬蟲技術:
在使用爬蟲技術之前我們需要了解什么是爬蟲,爬蟲技術說白了點就是拿別人發布再網上的資料,可以是淘寶京東商品,可以是一些文章,再說簡單點你去網上復制一篇心得,只不過這一系列操作不用人去做,我們交給代碼實作,
今天我分析的內容是爬京東商品,我會獲取商品的名稱,圖片,標簽和店名,
(我在網上搜了下,其實使用爬蟲獲取網上的一些資源使用,在不涉及商業的情況下算合理,但是如果被爬蟲方有意見我也會及時修改,我的目的只是記錄我的學習知識和分析給那些需要幫助的人)
好的開始進入主題:!!!
(這里需要大家有一點web的知識,如springboot,如果沒有那么要有點maven的知識吧,不然都不知道依賴是什么)
第一步我們可以新建一個springboot的專案,這里就用springboot專案來做例子,在pom.xml檔案中匯入相關的依賴,
首先這是爬蟲的依賴為了我們能獲取資料
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
這是一個物體類依賴,可以讓我省區寫get set
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
這是后面我們要的Elasticsearch的依賴,可以先加上
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
第一步我們先寫上物體類,我們需要的獲取名稱、標題、圖片、店名:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class goodJD {
private String img;
private String title;
private String price;
private String shopnum;
}
使用lombok就不需要一個個寫get和set方法了,
接著我們只需要在使用爬蟲就行,我們在test中測驗!

package com.example.test1; import com.example.test1.pojo.goodJD; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.net.URL; import java.util.ArrayList; @SpringBootTest class Test1ApplicationTests { @Test public void test() throws Exception { String url ="https://search.jd.com/Search?keyword=java"; Document document = Jsoup.parse(new URL(url), 900000000); Element element = document.getElementById("J_goodsList"); Elements elements = element.getElementsByTag("li"); ArrayList<goodJD> goodJDlist = new ArrayList<>(); for (Element el : elements) { String img = el.getElementsByTag("img").eq(0).attr("data-lazy-img"); System.out.println("img======>"+img); String price = el.getElementsByClass("p-price").eq(0).text(); System.out.println("price=======>"+price); String title = el.getElementsByClass("p-name").eq(0).text(); System.out.println("title======>"+title); String shopnum = el.getElementsByClass("p-shopnum").eq(0).text(); System.out.println("shopnum=======>"+shopnum); goodJD goodJD = new goodJD(); goodJD.setTitle(title); goodJD.setImg(img); goodJD.setPrice(price); goodJD.setShopnum(shopnum); goodJDlist.add(goodJD); } } }
代碼就只有這么多,我們一步步分析下代碼
第一步是寫上你需要爬蟲的網址,這里是京東官網,keyword關鍵字是java,

接著我們使用爬蟲類進入網站中,隨后需要獲取你想要的資料,我們可以用F12打開京東商場

先拿到這個ID,這是整個商品欄,這也是我們代碼中系結獲取的ID名,
每一個商品的圖片、價格、和名稱店名也可以看到,這也是我們需要爬的資料,因此在代碼中我們使用一個for回圈獲取這些ID的值,
代碼的運行結果如下:

從圖中我們可以看到獲取的資料就是京東上我們需要的資料

我們看一下圖片是不是正常的?
直接將圖片地址輸入到網址上,可以看出圖片能對應上,成功!!!
img12.360buyimg.com/n1/s200x200_jfs/t1/37162/11/8870/130954/5ccfe770E9ce31151/74a5a5dcd83ecc09.jpg

現在我們就已經能夠爬到資料了,我們可以將這些資料放入資料庫中,如mysql,oracle,決議來一章我會將這些資料放入Elacticsearch全文搜索引擎中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/386517.html
標籤:其他
