成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

Jsoup爬蟲(chóng)獲取自己網(wǎng)站在百度搜索中的實(shí)時(shí)排名

陳偉 / 2713人閱讀

摘要:沒(méi)有結(jié)果返回百度搜索的可以指定頁(yè)碼,最多一頁(yè)個(gè),使用后有效減少了連接次數(shù)。但親測(cè)下來(lái)設(shè)置過(guò)以后的結(jié)果與實(shí)際用戶(hù)在百度搜索的結(jié)果排序和個(gè)數(shù)都有出入。

一直有一個(gè)需求,希望看到自己網(wǎng)站在百度的實(shí)時(shí)的排名
用過(guò)一些工具,要么反應(yīng)遲鈍,要么結(jié)果不準(zhǔn)確或不實(shí)時(shí)
于是打算用jsoup寫(xiě)一個(gè)小爬蟲(chóng)來(lái)實(shí)時(shí)百度看網(wǎng)站排名

直接上代碼



依賴(lài)只有jsoup
jar包下載地址:https://mvnrepository.com/artifact/org.jsoup/jsoup
或者引入
maven依賴(lài)


    org.jsoup
    jsoup
    1.11.3



代碼

package com.zzzmh.spider;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class test {
    /** 百度搜索基本url 后面可以接的參數(shù)有 pn rn ie 等 */
    public final static String baseUrl = "https://www.baidu.com/s?ie=utf-8";
    /** 連接超時(shí)時(shí)間 */
    public static int timeout = 30 * 1000;
    /** 連接重試次數(shù) */
    public static int times = 10;
    /** UA */
    public static String UserAgent[] = {
            "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
            "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
            "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.32",
            "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36",
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.32" };

    /** 獲取隨機(jī)UA */
    public static String getRandomUA() {
        return UserAgent[(int) (Math.random() * (UserAgent.length))];
    }

    /** 在這里進(jìn)行連接 如果失敗會(huì)繼續(xù)重試 */
    public static Document getDocument(String url) {
        Document doc = null;
        for (int i = 0; i < times; i++) {
            try {
                doc = Jsoup.connect(url).header("User-Agent", getRandomUA()).timeout(timeout).get();
                if (doc != null)
                    break;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return doc;
    }

    /**
     * 爬取百度指定關(guān)鍵字和頁(yè)碼的數(shù)據(jù),只存id(排名號(hào)),title,url(百度會(huì)把url縮寫(xiě)) 親測(cè)雖然
     * 加了&rn=50可以明顯增加效率,但結(jié)果和用戶(hù)實(shí)際看到的有所出入,并不準(zhǔn)確,故用默認(rèn)rn,與用戶(hù)實(shí)際看到保持一致
     * 
     * @param keyword 關(guān)鍵字
     * @param page    頁(yè)碼
     */
    public static List> spider(String keyword, int page) {
        List> result = new ArrayList<>();
        try {
            Document document = getDocument(baseUrl + "&wd=" + keyword + "&pn=" + (page * 10));
            Elements els = document.getElementsByClass("result");
            for (Element el : els) {
                Map map = new HashMap<>();
                try {
                    map.put("id", el.attr("id"));
                    map.put("title", el.getElementsByTag("a").get(0).text());
                    map.put("url", el.getElementsByClass("f13").get(0).getElementsByTag("a").text());
                    result.add(map);
                } catch (Exception e) {
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 分析在指定關(guān)鍵字在百度的排名
     * 
     * @param keyword 關(guān)鍵字
     * @param url     要找的目標(biāo)包含的url
     * @param maxPage 最多找?guī)醉?yè),防止死循環(huán)
     * @return 找得到返回map 超過(guò)最大頁(yè)碼還找不到返回null
     */
    public static Map BaiduRanking(String keyword, String url, int maxPage) {
        System.out.println("開(kāi)始查找百度中關(guān)鍵字為 "" + keyword + "" 且url包含 "" 
                + url + "" 的相關(guān)數(shù)據(jù)排名 最多查詢(xún) " + maxPage + "頁(yè)");
        for (int i = 0; i < maxPage; i++) {
            // 輸出當(dāng)前頁(yè)碼和個(gè)數(shù),不需要輸出可以去掉
            System.out.println("正在查詢(xún)第" + i + "頁(yè)中的第" + (i * 10 + 1) + " ~ " + ((i + 1) * 10) + "個(gè)");
            List> list = spider(keyword, i);
            for (Map map : list) {
                if (map.get("url").contains(url)) {
                    return map;
                }
            }
        }
        return null;
    }

    public static void main(String[] args) {
        /*
         * 例如 找關(guān)鍵字 極簡(jiǎn)壁紙 主要的網(wǎng)址特征 bz.zzzmh.cn 最多找20頁(yè) (相當(dāng)于找1~200個(gè)中有無(wú)匹配)
         * 若有匹配返回 id title url
         * 若無(wú)匹配返回 Null
         */
        System.out.println(BaiduRanking("極簡(jiǎn)壁紙", "zzzmh.cn", 20));
    }
}


效果

1、網(wǎng)站標(biāo)題: zzzmh"s blog 網(wǎng)站url: https://zzzmh.cn
參數(shù):

關(guān)鍵字: "zzzmh" 目標(biāo)包含url: "zzzmh.cn" 最多查詢(xún)頁(yè)數(shù): "20"

運(yùn)行結(jié)果:

開(kāi)始查找百度中關(guān)鍵字為 "zzzmh" 且url包含 "zzzmh.cn" 的相關(guān)數(shù)據(jù)排名 最多查詢(xún) 20頁(yè)
正在查詢(xún)第0頁(yè)中的第1 ~ 10個(gè)
正在查詢(xún)第1頁(yè)中的第11 ~ 20個(gè)
{id=13, title=zzzmh"s Blog - Design By zmh, url=https://zzzmh.cn/  百度快照}



2、網(wǎng)站標(biāo)題: 極簡(jiǎn)壁紙... 網(wǎng)站url: https://bz.zzzmh.cn
參數(shù):

關(guān)鍵字: "極簡(jiǎn)壁紙" 目標(biāo)包含url: "zzzmh.cn" 最多查詢(xún)頁(yè)數(shù): "20"

運(yùn)行結(jié)果:

開(kāi)始查找百度中關(guān)鍵字為 "極簡(jiǎn)壁紙" 且url包含 "zzzmh.cn" 的相關(guān)數(shù)據(jù)排名 最多查詢(xún) 20頁(yè)
正在查詢(xún)第0頁(yè)中的第1 ~ 10個(gè)
正在查詢(xún)第1頁(yè)中的第11 ~ 20個(gè)
正在查詢(xún)第2頁(yè)中的第21 ~ 30個(gè)
正在查詢(xún)第3頁(yè)中的第31 ~ 40個(gè)
正在查詢(xún)第4頁(yè)中的第41 ~ 50個(gè)
正在查詢(xún)第5頁(yè)中的第51 ~ 60個(gè)
正在查詢(xún)第6頁(yè)中的第61 ~ 70個(gè)
正在查詢(xún)第7頁(yè)中的第71 ~ 80個(gè)
正在查詢(xún)第8頁(yè)中的第81 ~ 90個(gè)
正在查詢(xún)第9頁(yè)中的第91 ~ 100個(gè)
{id=93, title=極簡(jiǎn)壁紙_極致嚴(yán)選高清電腦桌面壁紙美圖4k_最潮桌面壁紙網(wǎng)站, url=https://bz.zzzmh.cn/  百度快照}



3、網(wǎng)站標(biāo)題: 極簡(jiǎn)插件... 網(wǎng)站url: https://chrome.zzzmh.cn
參數(shù):

關(guān)鍵字: "極簡(jiǎn)插件" 目標(biāo)包含url: "zzzmh.cn" 最多查詢(xún)頁(yè)數(shù): "20"

運(yùn)行結(jié)果:

開(kāi)始查找百度中關(guān)鍵字為 "極簡(jiǎn)插件" 且url包含 "zzzmh.cn" 的相關(guān)數(shù)據(jù)排名 最多查詢(xún) 20頁(yè)
正在查詢(xún)第0頁(yè)中的第1 ~ 10個(gè)
正在查詢(xún)第1頁(yè)中的第11 ~ 20個(gè)
正在查詢(xún)第2頁(yè)中的第21 ~ 30個(gè)
正在查詢(xún)第3頁(yè)中的第31 ~ 40個(gè)
正在查詢(xún)第4頁(yè)中的第41 ~ 50個(gè)
正在查詢(xún)第5頁(yè)中的第51 ~ 60個(gè)
正在查詢(xún)第6頁(yè)中的第61 ~ 70個(gè)
正在查詢(xún)第7頁(yè)中的第71 ~ 80個(gè)
正在查詢(xún)第8頁(yè)中的第81 ~ 90個(gè)
正在查詢(xún)第9頁(yè)中的第91 ~ 100個(gè)
正在查詢(xún)第10頁(yè)中的第101 ~ 110個(gè)
正在查詢(xún)第11頁(yè)中的第111 ~ 120個(gè)
正在查詢(xún)第12頁(yè)中的第121 ~ 130個(gè)
正在查詢(xún)第13頁(yè)中的第131 ~ 140個(gè)
正在查詢(xún)第14頁(yè)中的第141 ~ 150個(gè)
正在查詢(xún)第15頁(yè)中的第151 ~ 160個(gè)
正在查詢(xún)第16頁(yè)中的第161 ~ 170個(gè)
正在查詢(xún)第17頁(yè)中的第171 ~ 180個(gè)
正在查詢(xún)第18頁(yè)中的第181 ~ 190個(gè)
正在查詢(xún)第19頁(yè)中的第191 ~ 200個(gè)
null



補(bǔ)充:

有結(jié)果返回map包含id、title、url。沒(méi)有結(jié)果返回 Null

百度搜索的url可以指定rn頁(yè)碼,最多一頁(yè)50個(gè),使用后有效減少了連接次數(shù)。但親測(cè)下來(lái)設(shè)置過(guò)rn以后的結(jié)果與實(shí)際用戶(hù)在百度搜索的結(jié)果排序和個(gè)數(shù)都有出入。故選擇用默認(rèn)rn來(lái)檢測(cè),效果最準(zhǔn)確。




本篇博客也發(fā)表在了我的個(gè)人主頁(yè),歡迎查看,地址https://zzzmh.cn/single?id=58

END

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/73116.html

相關(guān)文章

  • Java爬蟲(chóng)之利用Jsoup自制簡(jiǎn)單的搜索引擎

    摘要:的官方網(wǎng)址為,其使用手冊(cè)網(wǎng)址為本次分享將實(shí)現(xiàn)的功能為利用爬取某個(gè)搜索詞語(yǔ)暫僅限英文的百度百科的介紹部分,具體的功能介紹可以參考博客爬蟲(chóng)自制簡(jiǎn)單的搜索引擎。 ??Jsoup 是一款Java 的HTML解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過(guò)DOM,CSS以及類(lèi)似于jQuery的操作方法來(lái)取出和操作數(shù)據(jù)。Jsoup的官方網(wǎng)址為: https:...

    GHOST_349178 評(píng)論0 收藏0
  • Python爬蟲(chóng)筆記1-爬蟲(chóng)背景了解

    摘要:學(xué)習(xí)爬蟲(chóng)的背景了解。但是搜索引擎蜘蛛的爬行是被輸入了一定的規(guī)則的,它需要遵從一些命令或文件的內(nèi)容,如標(biāo)注為的鏈接,或者是協(xié)議。不同領(lǐng)域不同背景的用戶(hù)往往具有不同的檢索目的和需求,搜索引擎無(wú)法提供針對(duì)具體某個(gè)用戶(hù)的搜索結(jié)果。 學(xué)習(xí)python爬蟲(chóng)的背景了解。 大數(shù)據(jù)時(shí)代數(shù)據(jù)獲取方式 如今,人類(lèi)社會(huì)已經(jīng)進(jìn)入了大數(shù)據(jù)時(shí)代,數(shù)據(jù)已經(jīng)成為必不可少的部分,可見(jiàn)數(shù)據(jù)的獲取非常重要,而數(shù)據(jù)的獲取的方式...

    oujie 評(píng)論0 收藏0
  • Java爬蟲(chóng)之爬取中國(guó)高校排名前100名并存入MongoDB中

    摘要:介紹在博客爬蟲(chóng)爬取中國(guó)高校排名前名并寫(xiě)入中,我們利用來(lái)寫(xiě)爬蟲(chóng),將中的大學(xué)排名表格爬取出來(lái),并存入到中。本次分享將用的來(lái)實(shí)現(xiàn)相同的功能,并將爬取到的數(shù)據(jù)存入到數(shù)據(jù)庫(kù)中。 介紹 ??在博客:Python爬蟲(chóng)——爬取中國(guó)高校排名前100名并寫(xiě)入MySQL中,我們利用Python來(lái)寫(xiě)爬蟲(chóng),將http://gaokao.xdf.cn/201702/1... 中的大學(xué)排名表格爬取出來(lái),并存入到My...

    jzzlee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<