Python網(wǎng)絡(luò)爬蟲之爬取微博熱搜
微博熱搜的爬取較為簡(jiǎn)單,我只是用了lxml和requests兩個(gè)庫(kù)
url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6
1.分析網(wǎng)頁(yè)的源代碼:右鍵--查看網(wǎng)頁(yè)源代碼.
從網(wǎng)頁(yè)代碼中可以獲取到信息
(1)熱搜的名字都在<td class="td-02">
的子節(jié)點(diǎn)<a>里
(2)熱搜的排名都在<td class=td-01 ranktop>
的里(注意置頂微博是沒有排名的!)
(3)熱搜的訪問量都在<td class="td-02">
的子節(jié)點(diǎn)<span>里
2.requests獲取網(wǎng)頁(yè)
(1)先設(shè)置url地址,然后模擬瀏覽器(這一步可以不用)防止被認(rèn)出是爬蟲程序。
###網(wǎng)址 url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6" ###模擬瀏覽器,這個(gè)請(qǐng)求頭windows下都能用 header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
(2)利用req uests庫(kù)的get()和lxml的etr ee()來獲 取網(wǎng)頁(yè)代碼
###獲取html頁(yè)面 html=etree.HTML(requests.get(url,headers=header).text)
3.構(gòu)造xpath路徑
上面第一步中三個(gè)xath路徑分別是:
affair=html.xpath('//td[@class="td-02"]/a/text()') rank=html.xpath('//td[@class="td-01 ranktop"]/text()') view=html.xpath('//td[@class="td-02"]/span/text()')
xpath的返回結(jié)果是列表,所以affair、rank、view都是字符串列表
4.格式化輸出
需要注意的是affair中多了一個(gè)置頂熱搜,我們先將他分離出來。
top=affair[0] affair=affair[1:]
這里利用了python的切片。
print('{0:<10}\t{1:<40}'.format("top",top)) for i in range(0, len(affair)): print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288)))
這里還是沒能做到完全對(duì)齊。。。
5.全部代碼
###導(dǎo)入模塊 import requests from lxml import etree ###網(wǎng)址 url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6" ###模擬瀏覽器 header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'} ###主函數(shù) def main(): ###獲取html頁(yè)面 html=etree.HTML(requests.get(url,headers=header).text) rank=html.xpath('//td[@class="td-01 ranktop"]/text()') affair=html.xpath('//td[@class="td-02"]/a/text()') view = html.xpath('//td[@class="td-02"]/span/text()') top=affair[0] affair=affair[1:] print('{0:<10}\t{1:<40}'.format("top",top)) for i in range(0, len(affair)): print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288))) main()
結(jié)果展示:
總結(jié)
以上所述是小編給大家介紹的Python網(wǎng)絡(luò)爬蟲之爬取微博熱搜,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python實(shí)戰(zhàn)之大魚吃小魚游戲的實(shí)現(xiàn)
這篇文章主要介紹了如何利用Python制作一個(gè)經(jīng)典游戲之大魚吃小魚,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-04-04Pandas中datetime數(shù)據(jù)類型的使用
本文主要介紹了Pandas中datetime數(shù)據(jù)類型的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12Python編程實(shí)現(xiàn)粒子群算法(PSO)詳解
這篇文章主要介紹了Python編程實(shí)現(xiàn)粒子群算法(PSO)詳解,涉及粒子群算法的原理,過程,以及實(shí)現(xiàn)代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié)
這篇文章主要介紹了詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python實(shí)現(xiàn)CART決策樹算法及詳細(xì)注釋
CART算法是一種樹構(gòu)建算法,既可以用于分類任務(wù),又可以用于回歸,本文僅討論基本的CART分類決策樹構(gòu)建,不討論回歸樹和剪枝等問題,感興趣的朋友跟隨小編一起看看吧2021-10-10Python3之外部文件調(diào)用Django程序操作model等文件實(shí)現(xiàn)方式
這篇文章主要介紹了Python3之外部文件調(diào)用Django程序操作model等文件實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python3.5實(shí)現(xiàn)socket通訊示例(TCP)
本篇文章主要介紹了python3.5實(shí)現(xiàn)socket通訊示例(TCP),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5菜單和工具欄功能作用
本文詳細(xì)解讀通過 QtDesigner 創(chuàng)建主窗口、菜單欄和工具欄,并以菜單項(xiàng) “退出” 為例關(guān)聯(lián)系統(tǒng)定義的動(dòng)作處理方法。有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10Python調(diào)用C/C++動(dòng)態(tài)鏈接庫(kù)的方法詳解
這篇文章主要介紹了Python調(diào)用C/C++動(dòng)態(tài)鏈接庫(kù)的方法,需要的朋友可以參考下2014-07-07