国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!

這篇具有很好參考價值的文章主要介紹了【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、爬取目標

大家好,我是盆子。今天這篇文章來講解一下:使用Java爬蟲爬取百度搜索結(jié)果。

首先,展示爬取的數(shù)據(jù),如下圖。

爬取結(jié)果1:

【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!

爬取結(jié)果2:

【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!

代碼爬取展示:

【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!

可以看到,上面爬取了五個字段,包括

標題,原文鏈接地址,鏈接來源,簡介信息,發(fā)布時間。

二、爬取分析

用到的技術(shù)棧,主要有這些

Puppeteer 網(wǎng)頁自動化工具
Jsoup 瀏覽器元素解析器
Mybatis-Plus 數(shù)據(jù)庫存儲

2.1 網(wǎng)頁結(jié)構(gòu)分析

打開百度搜索,搜索“手機”二字,可以看到下面這樣的搜索結(jié)果,我們需要爬的信息都在上面。

爬取網(wǎng)頁元素分析1:*

*嘗試去分析它的網(wǎng)頁結(jié)構(gòu):

【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!

爬取網(wǎng)頁元素分析2:

【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!

打開控制臺F12,可以看到這個 class =“result c-container xpath-log new-pmd” 所在的 div 標簽就包含我們要爬取的所有信息。

那就很簡單了,我們只需要去這個div里面,將需要的元素 (字段) 信息挨個的獲取即可。

同理,這個結(jié)構(gòu)也就是百度搜索結(jié)果的通用結(jié)構(gòu),其他的搜索結(jié)果中,也可以通過該 class 去定位。

2.2 爬蟲代碼分析

首先,這是我們代碼的核心依賴:

    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.16.2</version>
    </dependency>

    <dependency>
        <groupId>io.github.fanyong920</groupId>
        <artifactId>jvppeteer</artifactId>
        <version>1.1.5</version>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mybaits.plus.version}</version>
    </dependency>

初始化瀏覽器,并且打開百度搜索頁

        // 初始化瀏覽器相關(guān)
        BrowserFetcher.downloadIfNotExist(null);
        ArrayList<String> argList = new ArrayList<>();
        LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(false).build();
        argList.add("--no-sandbox");
        argList.add("--disable-setuid-sandbox");
        System.out.println("==1=");
        Browser browser = Puppeteer.launch(options);

        // 打開頁面,開爬
        Page page = browser.newPage();
        page.goTo("https://www.baidu.com/");

運行上述代碼,就會彈出一個瀏覽器(受我們代碼控制),并且打開百度搜索頁面

找出頁面元素,并且模擬人工搜索關(guān)鍵字、點擊搜索按鈕的操作

        // 模擬人工搜索關(guān)鍵字
        ElementHandle inputField = page.$("#kw");
        inputField.type("手機");
        // 模擬人工點擊搜索按鈕
        ElementHandle confirmSearch = page.$("#su");
        confirmSearch.click();

此時,瀏覽器頁面已經(jīng)按照你的搜索關(guān)鍵詞開始搜索了。

用代碼解析頁面

    // 獲取頁面所有內(nèi)容(HTML格式)
    String content = page.content();
    // 解析頁面元素,方便后面定位
    Document document = Jsoup.parse(content);
    // 找出我們上面說的那個class所在的div標簽
    Elements elements = document.getElementsByClass("result c-container xpath-log new-pmd");

    // 去 class所在的div標簽中找出需要的 字段信息
    for (int i = 0; i < elements.size(); i++) {
        Element element = elements.get(i);
        String title = element.getElementsByTag("a").text();
        String keyword = StrUtil.sub(title, 0, 7);
        // 將關(guān)鍵詞存儲到隊列中,后續(xù)可使用
        keyWordsQueue.offer(keyword);
        String href = element.getElementsByTag("a").attr("href");
        // ...找出其他字段
        System.out.println(dataInfo);
    }

至此,一個關(guān)鍵詞的爬取就已經(jīng)完成,如果想要繼續(xù)爬取關(guān)鍵詞,我們繼續(xù)搜索其他關(guān)鍵詞,并且重復上述操作即可。

完整代碼中,還包隨機等待時長、解析其他字段、保存數(shù)據(jù)、多個關(guān)鍵字同時爬取等關(guān)鍵邏輯,詳見文末。

三、總結(jié)

在爬蟲中,無非就是模擬人的操作過程,去做相關(guān)操作,獲取數(shù)據(jù)。

通過上文介紹的方式,我們是使用一種更具有通用型的方式去爬取數(shù)據(jù)。因為Puppeteer只是代理人手工點擊的方式,而拿到數(shù)據(jù)。

上述完整代碼,可以留言私信我獲取。

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!文章來源地址http://www.zghlxwxcb.cn/news/detail-750269.html

到了這里,關(guān)于【教你寫爬蟲】用Java爬蟲爬取百度搜索結(jié)果!可爬10w+條!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包