創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Python解釋為什么百度已死,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Python3爬蟲百度一下,坑死你?
一、寫在前面
這個標題是借用的路人甲大佬的一篇文章的標題(百度一下,坑死你),而且這次的爬蟲也是看了這篇文章后才寫出來的,感興趣的可以先看下這篇文章。
前段時間有篇文章《搜索引擎百度已死》引起了很多討論,而百度對此的回復(fù)是:百家號的內(nèi)容在百度搜索結(jié)果中不超過10%。但是這個10%是第一頁的10%還是所有數(shù)據(jù)的10%,我們不得而知,但是由于很多人都只會看第一頁的內(nèi)容,而如果這第一頁里有十分之一的內(nèi)容都來自于百家號,那搜索體驗恐怕不怎么好吧?然后我這次寫的爬蟲就是把百度上面的熱搜事件都搜索一下,然后把搜索結(jié)果的第一頁上的標題鏈接提取出來,最后對這些鏈接進行一些簡單的分析,看看百家號的內(nèi)容占比能有多少。
二、具體步驟
1.頁面分析
首先打開網(wǎng)頁查看百度的熱點事件,頁面如下:
這次我主要對今日熱點、娛樂熱點、體育熱點進行了爬取,每個熱點下面有50條熱點事件,然后對每個事件進行搜索,比如第一條--馬云的福字:
可以看到搜索結(jié)果的第一頁上有很多標題,然后對這些標題的鏈接進行爬取,再保存到一個txt文件里,最后對這些數(shù)據(jù)進行分析。
2.主要代碼
(1)獲取真實鏈接
這些搜索結(jié)果頁面上的鏈接都是經(jīng)過加密的,如下圖:
所以我們爬取得到的鏈接都是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,那我們要怎么得到真實的鏈接呢?相關(guān)代碼如下:
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)數(shù)據(jù)處理
這里我總共爬取了1051條鏈接,如下圖:
但是這樣的數(shù)據(jù)是明顯沒有辦法進行分析的,所以需要進行一下處理,比如將https://baijiahao.baidu.com/s?id=1624053575252859170&wfr=spider&for=pc變成baijiahao.baidu,相關(guān)代碼如下:
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)數(shù)據(jù)分析
這里主要使用了matplotlib繪圖幫助我們分析數(shù)據(jù)。首先需要統(tǒng)計出各個網(wǎng)站出現(xiàn)的次數(shù),然后進行一個排序,得到排名前十的網(wǎng)站,結(jié)果如下(前面是網(wǎng)站,后面是出現(xiàn)次數(shù)):
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
可以看到百家號出現(xiàn)的次數(shù)是最多的。然后進行繪圖分析,這里主要是繪圖的代碼,因為使用的是百分數(shù),所以在繪圖的時候會稍微麻煩一點:
def plot(self, index_list, value_list): b = self.ax.barh(range(len(index_list)), value_list, color='blue', height=0.8) # 添加數(shù)據(jù)標簽 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') # 設(shè)置Y軸刻度線標簽 self.ax.set_yticks(range(len(index_list))) self.ax.set_yticklabels(index_list) # 設(shè)置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("網(wǎng)站") plt.rcParams['font.sans-serif'] = ['SimHei'] plt.savefig("bjh.jpg") print("已保存為bjh.jpg!")
三、運行結(jié)果
由于每個事件的搜索結(jié)果都是不同的,所以在解析網(wǎng)頁的時候可能會出錯,然后就是請求頻率太高了會被ban掉,而且有時候UA會被識別出來然后就被ban掉了,運行情況如下圖:
最后看一下繪制出來的圖片:
可以看到百家號的內(nèi)容占比達到了17%,而排在第二的也是百度自家的產(chǎn)品,內(nèi)容占比也達到了10%。當然了,由于搜索的都是百度上的熱搜事件,所以得到的結(jié)果百度自家的內(nèi)容會多一點,但是光百家號的內(nèi)容就占了17%,是不是也太多了點呢?
上述就是小編為大家分享的Python解釋為什么百度已死了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
網(wǎng)站題目:Python解釋為什么百度已死-創(chuàng)新互聯(lián)
URL鏈接:http://aaarwkj.com/article36/dopisg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、域名注冊、網(wǎng)站改版、網(wǎng)站營銷、虛擬主機、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)