1. 程式人生 > >通過selenium實時獲取鬥魚主播熱度數據!鬥魚一哥居然是他?

通過selenium實時獲取鬥魚主播熱度數據!鬥魚一哥居然是他?

val apt ont layer page caption ash 活動 setting

通過這個例子,學習使用chrome的開發者工具定位頁面元素的位置,並通過selenium調用瀏覽器,對網頁數據進行抓取。

隨意打開一個主播的頁面,我們想要抓取的熱度信息如下:

技術分享圖片

34949+7177,熱度由兩部分相加得到,後一部分貌似是近期的活動加成。

在Chrome中,點擊右鍵選擇“檢查”,將會打開開發者工具

技術分享圖片

點擊圖中最左邊的單箭頭的方框,可以選擇頁面對應的元素

Python很容易學!所以小編有弄一個交流,互問互答,資源共享的交流學習基地,如果你也是Python的學習者或者大牛都歡迎你來!?:548+377+875!一起 學習共同進步!

技術分享圖片

這部分對應的源代碼

技術分享圖片

其中 class="summer_hot_value" 是比較重要的信息,我們做爬蟲時,可以通過class name來定位該元素。

程序完整代碼如下:

from selenium import webdriver
import time
options = webdriver.ChromeOptions()
prefs = {
‘profile.managed_default_content_settings.images‘: 1,
‘profile.content_settings.plugin_whitelist.adobe-flash-player‘: 1,
‘profile.content_settings.exceptions.plugins.*,*.per_resource.adobe-flash-player‘: 1,
}
options.add_experimental_option(‘prefs‘, prefs)
driver = webdriver.Chrome(‘/Users/xiewf/Desktop/PythonProjects/spider/chromedriver‘, chrome_options=options)
url = "https://www.douyu.com/3866447"
driver.set_window_size(1200, 900)
driver.get(url)
print(‘開始等待網頁刷新‘)
time.sleep(5)
while 1:
try:
hot_value = driver.find_element_by_class_name(‘summer_hot_value‘).text
print(hot_value)
time.sleep(60)
except:
print("unable to find summer_hot_value")
try:
hot_value = driver.find_element_by_class_name(‘hot-v‘).text
print(hot_value)
except:
print("unable to find hot-v")
fileObject = open(‘douyu_hot_v.html‘, ‘w‘)
fileObject.write(driver.page_source)
fileObject.close()
break
# driver.close()
print("程序運行結束")

簡單講解一下:

driver.find_element_by_class_name(‘summer_hot_value‘)

找出class name為summer_hot_value的元素,通過text方法可以獲得對應的字符串,即:

34949+7177,將這個信息打印出來,然後每隔60秒獲取一次熱度信息並打印。

調試的時候,發現當主播下線後,網頁中顯示熱度信息的地方會發生變化,此時summer_hot_value這個class就沒有了,程序會拋出異常退出。通過分析,我們發現,主播下線後,顯示熱度信息的class從summer_hot_value變成了hot-v,同理,我們可以抓取這個信息,打印出來。

程序運行結果如下:

技術分享圖片

每隔一分鐘獲取一次熱度信息,總共獲得403條數據

像一株盆栽、盆栽、盆栽,淡定而高雅~~~

技術分享圖片

通過selenium實時獲取鬥魚主播熱度數據!鬥魚一哥居然是他?