本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
以上文章來源于CSND,作者 sweetheart7-7
基本思路:
首先用開發者工具找到需要提取數據的標簽列表:
利用xpath定位需要提取數據的列表
然后再逐個提取相應的數據:
保存數據到csv:
利用開發者工具找到下一頁按鈕所在標簽:
利用xpath提取此標簽對象并返回:
調用點擊事件,并循環上述過程:
最終效果圖:
代碼:
from selenium import webdriver
import time
import reclass Douyu(object):def __init__(self):# 開始時的urlself.start_url = "https://www.douyu.com/directory/all"# 實例化一個Chrome對象self.driver = webdriver.Chrome()# 用來寫csv文件的標題self.start_csv = Truedef __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']").textitem["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']").textitem["click-hot"] = li.find_element_by_xpath(".//span[@class='DyListCover-hot']").textitem["click-hot"] = re.sub(r'n','',item['click-hot'])# 保存數據self.save_csv(item)# 返回是否有下一頁和下一頁的點擊事件的標簽,return next_page,is_next_urldef 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()
總結
以上是生活随笔為你收集整理的ajax将数据显示在class为content的标签中_python selenium:自动化爬取某鱼数据的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。