中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python解釋為什么百度已死

發布時間:2020-09-21 09:45:07 來源:億速云 閱讀:171 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關Python解釋為什么百度已死,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Python3爬蟲百度一下,坑死你?

一、寫在前面

這個標題是借用的路人甲大佬的一篇文章的標題(百度一下,坑死你),而且這次的爬蟲也是看了這篇文章后才寫出來的,感興趣的可以先看下這篇文章。

前段時間有篇文章《搜索引擎百度已死》引起了很多討論,而百度對此的回復是:百家號的內容在百度搜索結果中不超過10%。但是這個10%是第一頁的10%還是所有數據的10%,我們不得而知,但是由于很多人都只會看第一頁的內容,而如果這第一頁里有十分之一的內容都來自于百家號,那搜索體驗恐怕不怎么好吧?然后我這次寫的爬蟲就是把百度上面的熱搜事件都搜索一下,然后把搜索結果的第一頁上的標題鏈接提取出來,最后對這些鏈接進行一些簡單的分析,看看百家號的內容占比能有多少。

二、具體步驟

1.頁面分析

首先打開網頁查看百度的熱點事件,頁面如下:

Python解釋為什么百度已死

這次我主要對今日熱點、娛樂熱點、體育熱點進行了爬取,每個熱點下面有50條熱點事件,然后對每個事件進行搜索,比如第一條--馬云的福字:

Python解釋為什么百度已死

可以看到搜索結果的第一頁上有很多標題,然后對這些標題的鏈接進行爬取,再保存到一個txt文件里,最后對這些數據進行分析。

2.主要代碼

(1)獲取真實鏈接

這些搜索結果頁面上的鏈接都是經過加密的,如下圖:

Python解釋為什么百度已死

所以我們爬取得到的鏈接都是http://www.baidu.com/link?url=VfA2jxmqJdYt1U-G0wHjWIXglVEi-WCxpa8aaMCeOzkqK-c5CgYngPiJT6_-kmWE3ePTHCpgYlX5oq9SQDJgEukKCY19o26JlS1pEIgnlupbw0Ss9Ro3gQjYVuJljdxyBPfiDUJhM9ODV_0mKnrUhESJ95Az1OnB6mMScmCXiUi這種,但是我們點進去之后就能得到真實的鏈接https://www.baidu.com/s?tn=news&rtt=1&bsst=1&wd=%E9%A9%AC%E4%BA%91%E7%9A%84%E7%A6%8F%E5%AD%97&cl=2&origin=ps,那我們要怎么得到真實的鏈接呢?相關代碼如下:

def get_real_url(self, fake_url):
    # 獲取真實的鏈接
    try:
        res = requests.get(fake_url, headers=self.headers)
        real_url = res.url
    except Exception as e:
        print(e)

(2)數據處理

這里我總共爬取了1051條鏈接,如下圖:

Python解釋為什么百度已死

但是這樣的數據是明顯沒有辦法進行分析的,所以需要進行一下處理,比如將https://baijiahao.baidu.com/s?id=1624053575252859170&wfr=spider&for=pc變成baijiahao.baidu,相關代碼如下:

href = "https://baijiahao.baidu.com/s?id=1624053575252859170&wfr=spider&for=pc"
match = re.match("(http[s]?://.+?[com,cn,net]/)", href) 
href = match.group()
href = href.replace('cn', 'com').replace('net', 'com')
href = href[href.index(':') + 3:].rstrip('.com/')
print(href)
# baijiahao.baidu

(3)數據分析

 這里主要使用了matplotlib繪圖幫助我們分析數據。首先需要統計出各個網站出現的次數,然后進行一個排序,得到排名前十的網站,結果如下(前面是網站,后面是出現次數):

https://baijiahao.baidu.com/  188
https://www.baidu.com/  114
http://www.sohu.com/  60
https://news.china.com/  29
http://www.guangyuanol.cn/  27
http://image.baidu.com/ 24
http://3g.163.com/  20
https://sports.qq.com/  19
https://www.iqiyi.com/ 17
https://baike.baidu.com/  17

可以看到百家號出現的次數是最多的。然后進行繪圖分析,這里主要是繪圖的代碼,因為使用的是百分數,所以在繪圖的時候會稍微麻煩一點:

def plot(self, index_list, value_list):
   b = self.ax.barh(range(len(index_list)), value_list, color='blue', height=0.8)
   # 添加數據標簽
    for rect in b:
        w = rect.get_width()
        self.ax.text(w, rect.get_y() + rect.get_height() / 2, '{}%'.format(w),
                     ha='left', va='center')
    # 設置Y軸刻度線標簽
    self.ax.set_yticks(range(len(index_list)))
    self.ax.set_yticklabels(index_list)
    # 設置X軸刻度線
    lst = ["{}%".format(i) for i in range(0, 20, 2)]
    self.ax.set_xticklabels(lst)

    plt.subplots_adjust(left=0.25)
    plt.xlabel("占比")
    plt.ylabel("網站")
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.savefig("bjh.jpg")
    print("已保存為bjh.jpg!")

三、運行結果

由于每個事件的搜索結果都是不同的,所以在解析網頁的時候可能會出錯,然后就是請求頻率太高了會被ban掉,而且有時候UA會被識別出來然后就被ban掉了,運行情況如下圖:

Python解釋為什么百度已死

最后看一下繪制出來的圖片:

Python解釋為什么百度已死

可以看到百家號的內容占比達到了17%,而排在第二的也是百度自家的產品,內容占比也達到了10%。當然了,由于搜索的都是百度上的熱搜事件,所以得到的結果百度自家的內容會多一點,但是光百家號的內容就占了17%,是不是也太多了點呢?

上述就是小編為大家分享的Python解釋為什么百度已死了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东方市| 天长市| 万安县| 巩留县| 阜平县| 丰原市| 姚安县| 宿迁市| 博湖县| 黄石市| 洛扎县| 金门县| 兴安县| 讷河市| 平江县| 陇川县| 社会| 巴林右旗| 石棉县| 榆林市| 台东市| 木兰县| 绍兴市| 宁国市| 临江市| 鹰潭市| 敖汉旗| 南汇区| 宜兰县| 陇南市| 洪江市| 青阳县| 读书| 渝北区| 团风县| 黑山县| 鄂托克旗| 黄平县| 启东市| 怀安县| 延津县|