我正在使用 Selenium 尝试从网站获取数据。但是我想要的数据存储在“隐藏”标签中,所以当我拉出源时它是不可见的。有没有办法解决这个问题?是否有不同类型的隐藏?
我认为它是隐藏的,因为我也在使用 Firebug,它可以在我试图抓取的页面上看到源代码,但它“灰色”了那个源,我读过这表明该源被隐藏使用 style:hidden 标签。
我正在使用 Selenium 尝试从网站获取数据。但是我想要的数据存储在“隐藏”标签中,所以当我拉出源时它是不可见的。有没有办法解决这个问题?是否有不同类型的隐藏?
我认为它是隐藏的,因为我也在使用 Firebug,它可以在我试图抓取的页面上看到源代码,但它“灰色”了那个源,我读过这表明该源被隐藏使用 style:hidden 标签。
可能发生的情况是网站正在通过 JavaScript 和/或 XMLHttpRequest 或通过 CSS 加载附加数据。Firebug 会在完成后向您显示 DOM。使用 Webdriver,您可以引导浏览器加载页面并与之交互。一旦存在特定的用户交互,当提供一些附加信息时,就会出现问题。因此,缓解这种情况的一种方法是使用 webdriver 来引导浏览器并执行相同的操作序列,以便 DOM 会相应地发生变化。
您可能想要使用 CSS 来更改属性并使元素也可见。
鉴于您没有提供任何代码示例来说明您正在尝试做什么,因此准确地帮助您是不现实的。但是你会在官方文档中找到大量的 python 中的webdriver 代码示例。
我使用 Selenium 抓取的具体原因之一是确保在我开始搜索内容之前,每个页面的 javascript 创建部分都已完全呈现。我使用这一行来等待我要加载的内容:
WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.XPATH, my_xpath)))
'30' 是一个 30 秒的等待计时器,如果超过此时间,则会发生 TimeoutException,因此您需要将其放入一个try ... except:
块中。更改my_xpath
以匹配您想要的标签。即使样式被标记为隐藏,Selenium 仍然可以看到它。