1. 程式人生 > 程式設計 >python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

基本思路:

首先用開發者工具找到需要提取資料的標籤列

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

利用xpath定位需要提取資料的列表

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

然後再逐個提取相應的資料:

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

儲存資料到csv:

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

利用開發者工具找到下一頁按鈕所在標籤:

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

利用xpath提取此標籤物件並返回:

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

呼叫點選事件,並迴圈上述過程:

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

最終效果圖:

python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解

程式碼:

from selenium import webdriver
import time
import re

class Douyu(object):

  def __init__(self):
    # 開始時的url
    self.start_url = "https://www.douyu.com/directory/all"
    # 例項化一個Chrome物件
    self.driver = webdriver.Chrome()
    # 用來寫csv檔案的標題
    self.start_csv = True

  def __del__(self):
    self.driver.quit()

  def get_content(self):
    # 先讓程式兩秒,保證頁面所有內容都可以加載出來
    time.sleep(2)
    item = {}
    # 獲取進入下一頁的標籤
    next_page = self.driver.find_element_by_xpath("//span[text()='下一頁']/..")
    # 獲取用於判斷是否是最後一頁的屬性
    is_next_url = next_page.get_attribute("aria-disabled")
    # 獲取儲存資訊的所有li標籤的列表
    li_list = self.driver.find_elements_by_xpath("//ul[@class='layout-Cover-list']//li")
    
    # 提取需要的資料
    for li in li_list:
      
      item["user-id"] = li.find_element_by_xpath(".//div[@class='DyListCover-userName']").text
      item["img"] = li.find_element_by_xpath(".//div[@class='DyListCover-imgWrap']//img").get_attribute("src")
      item['class-name'] = li.find_element_by_xpath(".//span[@class='DyListCover-zone']").text
      item["click-hot"] = li.find_element_by_xpath(".//span[@class='DyListCover-hot']").text
      item["click-hot"] = re.sub(r'\n','',item['click-hot'])
      
      # 儲存資料
      self.save_csv(item)
    
    # 返回是否有下一頁和下一頁的點選事件的標籤,return next_page,is_next_url

  def save_csv(self,item):
    # 將提取存放到csv檔案中的內容連線為csv格式檔案
    str = ','.join([i for i in item.values()])

    with open('./douyu.csv','a',encoding='utf-8') as f:
      if self.start_csv:
        f.write("使用者id,image,所屬類,點選熱度\n")
        self.start_csv = False
      # 將字串寫入csv檔案
      f.write(str)
      f.write('\n')
    print("save success")

  def run(self):
    # 啟動chrome並定位到相應頁面
    self.driver.get(self.start_url)

    while True:
      # 開始提取資料,並獲取下一頁的元素
      next_page,is_next = self.get_content()
      if is_next!='false':
        break
      # 點選下一頁
      next_page.click()

if __name__=='__main__':
  douyu_spider = Douyu()
  douyu_spider.run()

到此這篇關於python爬蟲利用selenium實現自動翻頁爬取某魚資料的思路詳解的文章就介紹到這了,更多相關python爬蟲實現自動翻頁爬取某魚資料內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!