python—爬取某魚直播

  • 2019 年 10 月 8 日
  • 筆記

用了selenium,才深刻的體會到它的好處,更加的方便更加的快捷,更容易的獲取網頁的資訊。


這裡用selenium爬取某魚直播下面的前五頁的直播間資訊,例如直播房間名,主播名,直播熱度,以及直播的類別。即圖片紅色下橫線的東西。首先進入鬥魚的頁面,選擇直播,接著複製url備用,然後就按F12去分析

做爬蟲的步驟還是那樣,先去原網頁的地址找到數據的位置,接著提取出需要的數據,在整理起來,保存起來。

這裡我獲取的只有前5頁的直播間資訊。當然可以獲取更多的內容。做爬蟲只是為了方便統計以及數據的可視化,便於學習和觀察,並不能做什麼非法操作。主要目的都是為了學習。

用selenium爬取網頁的坑就只有一兩個:

第一:獲取url後,需要等待個幾秒,讓網頁充分緩衝之後才去提取網頁的數據,這樣才能提取到數據,否則就是一個框架,並不能得到有用的消息。

第二,如果要實現換頁功能的話,需要將解析網頁的語句也放入循環,不然也會報錯

第三,就是用selenium的時候一定要匹配好單引號和雙引號,在python的習慣下,字元串就一般使用單引號去用,而網頁的數據是雙引號的話也提取不到數據。

第四,換頁操作的時候,選擇正確的class名字至關重要

如果用瀏覽器的f12的選擇的功能,他會定位到這裡黑色下劃線的地方,但是要實現換行要選擇紅色下劃線的class名,才能實現。

關於用selenium去爬取的東西也沒其他的了,詳細的操作可以去這裡看

python– 爬蟲之用Selenium做爬蟲

下面貼一下程式碼,程式碼僅供參考,如若有錯,歡迎指出:

from selenium import webdriver  import time    path = '這裡是你的selenium的驅動的地址'  url = 'https://www.douyu.com/directory/all'  browser = webdriver.Chrome(executable_path=path)  browser.maximize_window()  browser.get(url)  time.sleep(10)    allzhibo = []    nnum = 0  page = 0  while page<1:      li_list = browser.find_elements_by_xpath('//ul[@class="layout-Cover-list"]/li')      num = 0  for i in li_list:          zhibo = {}          if num >=10:              zhibo['數目'] = nnum              num+=1  nnum+=1  zhibo['直播房間名'] = i.find_element_by_class_name("DyListCover-intro").text              zhibo['主播'] = i.find_element_by_class_name("DyListCover-user").text              zhibo['直播熱度'] = i.find_element_by_class_name("DyListCover-hot").text              zhibo['分類'] = i.find_element_by_class_name("DyListCover-zone").text              allzhibo.append(zhibo)          else:              num+=1      nextpage = browser.find_element_by_class_name("dy-Pagination-next")      nextpage.click()      page+=1  time.sleep(10)  #這裡實現的是將數據保存到文本里去  with open('某魚直播.txt','w',encoding='utf-8') as f:      for i in allzhibo:          for j in i.keys():              print(j+':'+str(i[j])+' ')              f.write(j+':'+str(i[j])+' ')          f.write('n')  browser.close()

最後得到結果就是這樣的:

然後可以對這些數據進行分類排序,就可以得到一些熱度最高的直播間,或者是什麼分類的直播間有那些的操作。