selenium爬取斗鱼的房间信息

    科技2024-01-28  104

    selenium爬取斗鱼的房间信息

    #!usr/bin/envpython # -*-coding:utf-8_*- """ @author:86135 @file:douyu.py @time:2020/10/05 @desc: 格式化代码:Ctrl+Alt+L 运行代码:Ctrl+Shift+F10 """ from selenium import webdriver import time # 面向对象的方法来写更简洁。 class douyuSpider(): def __init__(self): self.startUrl = 'https://www.douyu.com/directory/all' # 配置webdriver,不展示浏览器动作 options = webdriver.ChromeOptions() options.add_argument('--headless') # 实例化driver self.driver = webdriver.Chrome(chrome_options=options) def parse(self): #等待页面加载 time.sleep(5) # 页面模拟滑动 self.roll() # 找到对应的li标签,返回一个列表 li_list = self.driver.find_elements_by_xpath("//*[@id='listAll']/section[2]/div[2]/ul/li") # 定义一个列表,用来保存页面中的数据 content_list = [] # 遍历li标签,提取每一个标签(房间)的信息 for li in li_list: item = {} # 信息可以自定义,这里只是做个例子 item["cate"] = li.find_element_by_xpath(".//span[@class = 'DyListCover-zone']").text item["name"] = li.find_element_by_xpath(".//div[@class='DyListCover-userName']").text print(item) # 将信息追加到列表中 content_list.append(item) # 找到下一页的xpath,用elements。返回别表的形式,用来判断是否有下一页 next_url = self.driver.find_elements_by_xpath("//li[@class=' dy-Pagination-next']/span") # 控制台打印用来检测一下 print(len(next_url)) # 判断是否有下一页按钮,没有返回None值 next_url = next_url[0] if len(next_url)>0 else None # 方法的返回值 return content_list, next_url # 保存的方法,略。。。 def save_content(self, content_list): pass # 模拟页面滑动,JS语法 def roll(self): for x in range(1,11,2): time.sleep(0.5) j = x /10 js = "document.documentElement.scrollTop = document.documentElement.scrollHeight * {}".format(j) self.driver.execute_script(js) # 实现主要逻辑 def run(self): # 获取起始网页 self.driver.get(self.startUrl) # 解析网页数据 content_list, next_url = self.parse() # 保存数据 self.save_content(content_list) # 判断是否有下一页,进行循环 while next_url is not None: next_url.click() content_list, next_url = self.parse() self.save_content(content_list) # 没有下一页则推出程序 else:self.driver.quit() # main方法,程序的入口 if __name__ == '__main__': douyu = douyuSpider() douyu.run()
    Processed: 0.018, SQL: 8