Python網(wǎng)絡(luò)爬蟲(chóng)之爬取微博熱搜
微博熱搜的爬取較為簡(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>的里(注意置頂微博是沒(méi)有排名的!)
(3)熱搜的訪問(wèn)量都在<td class="td-02">的子節(jié)點(diǎn)<span>里
2.requests獲取網(wǎng)頁(yè)
(1)先設(shè)置url地址,然后模擬瀏覽器(這一步可以不用)防止被認(rèn)出是爬蟲(chóng)程序。
###網(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()來(lái)獲 取網(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è)置頂熱搜,我們先將他分離出來(lái)。
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)))
這里還是沒(méi)能做到完全對(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ò)爬蟲(chóng)之爬取微博熱搜,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
淺談numpy中np.array()與np.asarray的區(qū)別以及.tolist
這篇文章主要介紹了淺談numpy中np.array()與np.asarray的區(qū)別以及.tolist,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄
這篇文章主要介紹了Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
python中functools.lru_cache的具體使用
本文主要介紹了python中functools.lru_cache的具體使用,通過(guò)functools.lru_cache,你可以輕松優(yōu)化具有重復(fù)計(jì)算的函數(shù),大大提高代碼的執(zhí)行效率2024-09-09
python3使用mutagen進(jìn)行音頻元數(shù)據(jù)處理的方法
mutagen是一個(gè)處理音頻元數(shù)據(jù)的python模塊,支持多種音頻格式,是一個(gè)純粹的python庫(kù),僅依賴python標(biāo)準(zhǔn)庫(kù),可在Python?3.7及以上版本運(yùn)行,支持Linux、Windows?和?macOS系統(tǒng),這篇文章主要介紹了python3使用mutagen進(jìn)行音頻元數(shù)據(jù)處理,需要的朋友可以參考下2022-10-10
python游戲?qū)崙?zhàn)項(xiàng)目之智能五子棋簡(jiǎn)易版
利用Python實(shí)現(xiàn)智能五子棋,實(shí)現(xiàn)之后發(fā)現(xiàn)我玩不贏它!本篇為你帶來(lái)用python編寫的五子棋小游戲,文中給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09
利用Pandas和Numpy按時(shí)間戳將數(shù)據(jù)以Groupby方式分組
這篇文章主要介紹了利用Pandas和Numpy按時(shí)間戳將數(shù)據(jù)以Groupby方式分組,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

