鱼C论坛

 找回密码
 立即注册
查看: 2870|回复: 13

[已解决]selenium问题求助!!

[复制链接]
发表于 2020-10-25 15:56:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from selenium import webdriver


  2. class Douyu(object):
  3.     def __init__(self):
  4.         self.url = 'https://www.douyu.com/directory/all'
  5.         self.driver = webdriver.Chrome(executable_path='D:\chromedriver_win32\chromedriver.exe')

  6.     def run(self):
  7.         # url
  8.         # driver
  9.         # get
  10.         self.driver.get(self.url)
  11.         # parse
  12.         self.parse_data()
  13.         # save
  14.         # next_page

  15.     def parse_data(self):
  16.         room_list = self.driver.find_elements_by_xpath('//*[@id="listAll"]/section[2]/div[2]/ul/li/div')
  17.         # print(room_list)
  18.         # js = 'scrollTo(0,1000)'  # 将滚动条向下滚动
  19.         # 遍历房间列表,从每一个房间结点获取数据
  20.         for room in room_list:
  21.             # title = room.find_element_by_class_name("DyListCover-userName").text
  22.             # self.driver.execute_script(js)  # 执行JS代码
  23.             temp = {'title': room.find_element_by_xpath('./a[1]/div[2]/div[1]/h3').text,
  24.                     'type': room.find_element_by_xpath('./a[1]/div[2]/div[1]/span').text,
  25.                     'owner': room.find_element_by_xpath('./a[1]/div[2]/div[2]/h2/div').text,
  26.                     'number': room.find_element_by_xpath('./a[1]/div[2]/div[2]/span').text}
  27.             print(temp)


  28. if __name__ == '__main__':
  29.     douyu = Douyu()
  30.     douyu.run()
复制代码



这段代码打印出来的temp会报错,请问应该怎么解决?? RK7JYTK6$UL6HP@NWJCI5GA.png
最佳答案
2020-10-27 12:21:28
  1. def parse_data(self):
  2.         room_list = self.driver.find_elements_by_xpath("//div[@class='layout-Module-container layout-Cover ListContent']")
  3.         for room in room_list:
  4.             roomlist=room.text.split('\n')
  5.             print(roomlist)
复制代码

报错是由于find_elements_by_xpath后页面元素有变化。你根据之前获取的WebElement的ID去获取会找不到。你这个可以一次获取然后4个一组就能获取到了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-25 16:22:34 | 显示全部楼层
好像是没设置等待时间,页面没加载完。加了等待时间加可以了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 16:38:14 | 显示全部楼层

回帖奖励 +2 鱼币

鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-25 16:56:06 | 显示全部楼层

回帖奖励 +2 鱼币

你这头像不敢看啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 18:00:22 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-25 18:02:16 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-25 18:14:48 | 显示全部楼层

回帖奖励 +2 鱼币

回帖奖励?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 18:19:43 | 显示全部楼层

回帖奖励 +2 鱼币

Lwq_Official 发表于 2020-10-25 16:22
好像是没设置等待时间,页面没加载完。加了等待时间加可以了。。。

是已经解决了吗?楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 10:20:37 | 显示全部楼层

回帖奖励 +2 鱼币

你这是你现在用的chrome浏览器和你所用的webdriver版本不匹配导致的,重新下一个就行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 17:07:56 | 显示全部楼层

回帖奖励 +2 鱼币

没用过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 21:47:35 | 显示全部楼层

回帖奖励 +2 鱼币

我有点没看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-27 08:14:16 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-27 12:21:28 | 显示全部楼层    本楼为最佳答案   
  1. def parse_data(self):
  2.         room_list = self.driver.find_elements_by_xpath("//div[@class='layout-Module-container layout-Cover ListContent']")
  3.         for room in room_list:
  4.             roomlist=room.text.split('\n')
  5.             print(roomlist)
复制代码

报错是由于find_elements_by_xpath后页面元素有变化。你根据之前获取的WebElement的ID去获取会找不到。你这个可以一次获取然后4个一组就能获取到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-30 20:39:19 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-29 00:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表