Python實現(xiàn)抖音熱搜定時爬取功能
大家好,我是丁小杰。
上次和大家分享了Python定時爬取微博熱搜示例介紹,堪稱摸魚神器,一個熱榜不夠看?今天我們再來爬取一下抖音熱搜榜,感興趣的小伙伴可以自己動手嘗試一下哦。
抖音熱搜榜
鏈接:https://tophub.today/n/K7GdaMgdQy
整個熱榜共50條數(shù)據(jù),本次爬取的內(nèi)容:排名、熱度、標題、鏈接。
requests 爬取
requests
是一種非常簡單的方法,由于該頁面沒有反爬措施,所以直接get
請求頁面即可。
import?requests import?pandas?as?pd headers?=?{ ????'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/94.0.4606.54?Safari/537.36' } url?=?'https://tophub.today/n/K7GdaMgdQy' page_text?=?requests.get(url=url,?headers=headers).text page_text
可以看到,只需要幾行代碼,數(shù)據(jù)就很輕松地獲取到了。
selenium 爬取
將selenium
設(shè)置為無頭瀏覽器,打開指定url
獲取頁面數(shù)據(jù)。
from?selenium?import?webdriver option?=?webdriver.ChromeOptions() option.add_argument('--headless') driver?=?webdriver.Chrome(options=option) url?=?'https://tophub.today/n/K7GdaMgdQy' driver.get(url) page_text?=?driver.page_source
兩種爬取方法都能夠成功獲取到數(shù)據(jù),但requests
相對簡潔,整個代碼運行速度也更快,如果頁面數(shù)據(jù)不是動態(tài)加載的話,用requests
相對方便。
數(shù)據(jù)解析
現(xiàn)在用lxml
庫解析我們爬取的數(shù)據(jù),并保存到excel
中。
tree?=?etree.HTML(page_text) tr_list?=?tree.xpath( ????'//*[@id="page"]/div[2]/div[2]/div[1]/div[2]/div/div[1]/table/tbody/tr') df?=?pd.DataFrame(columns=['排名',?'熱度',?'標題',?'鏈接']) for?index,?tr?in?enumerate(tr_list): ????hot?=?tr.xpath('./td[3]/text()')[0] ????title?=?tr.xpath('./td[2]/a/text()')[0] ????article_url?=?tr.xpath('./td[2]/a/@href')[0] ????df?=?df.append({ ????????'排名':?index?+?1, ????????'熱度':?hot, ????????'標題':?title, ????????'鏈接':?article_url},?ignore_index=True) df['鏈接']?=?'https://tophub.today'?+?df['鏈接'] df
運行結(jié)果
設(shè)置定時運行
至此,爬取代碼已經(jīng)完成,想要實現(xiàn)每小時自動運行代碼,可以使用任務(wù)計劃程序。
打開任務(wù)計劃程序,【創(chuàng)建任務(wù)】
輸入名稱,名稱隨便起就好。
選擇【觸發(fā)器】>>【新建】>>【設(shè)置觸發(fā)時間】
選擇【操作】>>【新建】>>【選擇程序】
最后確認即可。到時間就會自動運行,或者右鍵任務(wù)手動運行。
這就是今天要分享的內(nèi)容,整體難度不大,希望大家能夠有所收獲,文章中的代碼拼接起來就可以運行!
以上就是Python實現(xiàn)抖音熱搜定時爬取功能的詳細內(nèi)容,更多關(guān)于Python抖音熱搜爬取的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python中的對數(shù)log函數(shù)表示及用法
在本篇文章里小編給大家整理了一篇關(guān)于python中的對數(shù)log函數(shù)表示及用法,有需要的朋友們可以學習下。2020-12-12