selenium 翻页_利用selenium实现自动翻页爬取某鱼数据
生活随笔
收集整理的這篇文章主要介紹了
selenium 翻页_利用selenium实现自动翻页爬取某鱼数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
基本思路:
首先用開發(fā)者工具找到需要提取數(shù)據(jù)的標(biāo)簽列表:
利用xpath定位需要提取數(shù)據(jù)的列表
然后再逐個提取相應(yīng)的數(shù)據(jù):
保存數(shù)據(jù)到csv:
利用開發(fā)者工具找到下一頁按鈕所在標(biāo)簽:
利用xpath提取此標(biāo)簽對象并返回:
調(diào)用點(diǎn)擊事件,并循環(huán)上述過程:
最終效果圖:
代碼:
from selenium import webdriverimport time
import re
class Douyu(object):
def __init__(self):
# 開始時的url
self.start_url = "https://www.douyu.com/directory/all"
# 實(shí)例化一個Chrome對象
self.driver = webdriver.Chrome()
# 用來寫csv文件的標(biāo)題
self.start_csv = True
def __del__(self):
self.driver.quit()
def get_content(self):
# 先讓程序兩秒,保證頁面所有內(nèi)容都可以加載出來
time.sleep(2)
item = {}
# 獲取進(jìn)入下一頁的標(biāo)簽
next_page = self.driver.find_element_by_xpath("//span[text()='下一頁']/..")
# 獲取用于判斷是否是最后一頁的屬性
is_next_url = next_page.get_attribute("aria-disabled")
# 獲取存儲信息的所有l(wèi)i標(biāo)簽的列表
li_list = self.driver.find_elements_by_xpath("//ul[@class='layout-Cover-list']//li")
# 提取需要的數(shù)據(jù)
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'])
# 保存數(shù)據(jù)
self.save_csv(item)
# 返回是否有下一頁和下一頁的點(diǎn)擊事件的標(biāo)簽,
return next_page,is_next_url
def save_csv(self,item):
# 將提取存放到csv文件中的內(nèi)容連接為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,所屬類,點(diǎn)擊熱度\n")
self.start_csv = False
# 將字符串寫入csv文件
f.write(str)
f.write('\n')
print("save success")
def run(self):
# 啟動chrome并定位到相應(yīng)頁面
self.driver.get(self.start_url)
while True:
# 開始提取數(shù)據(jù),并獲取下一頁的元素
next_page,is_next = self.get_content()
if is_next!='false':
break
# 點(diǎn)擊下一頁
next_page.click()
if __name__=='__main__':
douyu_spider = Douyu()
douyu_spider.run()
歡迎關(guān)注公眾號:Python爬蟲數(shù)據(jù)分析挖掘,回復(fù)【開源源碼】免費(fèi)獲取更多開源項(xiàng)目源碼
公眾號每日更新python知識和【免費(fèi)】工具
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的selenium 翻页_利用selenium实现自动翻页爬取某鱼数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 统计_聊聊 Linux 的内
- 下一篇: efi分区咋移动到c盘里_怎么手动安装C