Python網(wǎng)絡(luò)爬蟲之爬取微博熱搜
微博熱搜的爬取較為簡單,我只是用了lxml和requests兩個庫
url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6
1.分析網(wǎng)頁的源代碼:右鍵--查看網(wǎng)頁源代碼.
從網(wǎng)頁代碼中可以獲取到信息
(1)熱搜的名字都在<td class="td-02">
的子節(jié)點<a>里
(2)熱搜的排名都在<td class=td-01 ranktop>
的里(注意置頂微博是沒有排名的!)
(3)熱搜的訪問量都在<td class="td-02">
的子節(jié)點<span>里
2.requests獲取網(wǎng)頁
(1)先設(shè)置url地址,然后模擬瀏覽器(這一步可以不用)防止被認出是爬蟲程序。
###網(wǎng)址 url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6" ###模擬瀏覽器,這個請求頭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庫的get()和lxml的etr ee()來獲 取網(wǎng)頁代碼
###獲取html頁面 html=etree.HTML(requests.get(url,headers=header).text)
3.構(gòu)造xpath路徑
上面第一步中三個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中多了一個置頂熱搜,我們先將他分離出來。
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)))
這里還是沒能做到完全對齊。。。
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頁面 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ò)爬蟲之爬取微博熱搜,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Python實戰(zhàn)之大魚吃小魚游戲的實現(xiàn)
這篇文章主要介紹了如何利用Python制作一個經(jīng)典游戲之大魚吃小魚,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-04-04Pandas中datetime數(shù)據(jù)類型的使用
本文主要介紹了Pandas中datetime數(shù)據(jù)類型的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié)
這篇文章主要介紹了詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python3之外部文件調(diào)用Django程序操作model等文件實現(xiàn)方式
這篇文章主要介紹了Python3之外部文件調(diào)用Django程序操作model等文件實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04python3.5實現(xiàn)socket通訊示例(TCP)
本篇文章主要介紹了python3.5實現(xiàn)socket通訊示例(TCP),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Python深度學(xué)習(xí)實戰(zhàn)PyQt5菜單和工具欄功能作用
本文詳細解讀通過 QtDesigner 創(chuàng)建主窗口、菜單欄和工具欄,并以菜單項 “退出” 為例關(guān)聯(lián)系統(tǒng)定義的動作處理方法。有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10Python調(diào)用C/C++動態(tài)鏈接庫的方法詳解
這篇文章主要介紹了Python調(diào)用C/C++動態(tài)鏈接庫的方法,需要的朋友可以參考下2014-07-07