2013-03-30 109 views
0

我使用Selenium尝试从网站获取数据。但是我想要的数据存储在'hidden'标签中,所以当我拉取源代码时它不可见。有什么办法可以解决这个问题吗?是否有不同类型的隐藏?(Python)使用'style:hidden'标签从网站上刮取数据?

我认为它是隐藏的,因为我也使用Firebug,它可以看到页面上的来源,我试图刮擦,但它'灰色'的来源,我读过的是该来源隐藏着style:hidden标记。

+0

你是否能够使用urllib2或类似的方式拉HTML?如果是这样,那么在那里找它,也许你可以用美丽的汤来处理它,以获得隐藏的标签。 –

+0

我可以拉它,但有一大块内容是从它丢失。这只是不存在。 – user1472747

+0

你可以给你感兴趣的网站的网址吗? – user1609452

回答

1

可能发生的情况是,网站正在通过JavaScript和/或XMLHttpRequest或通过CSS加载附加数据。一旦Firebug完成,Firebug会向您显示DOM。使用Webdriver,您可以在浏览器中加载页面并与其交互。一旦有特定的用户交互时,就会提供一些附加信息。因此,减轻这一点的一种方法是使用webdriver来引导浏览器并执行相同的操作顺序,以便DOM相应地改变。

您可能想要使用CSS来更改属性并使该元素可见。

鉴于您没有提供任何您想要做的代码示例,因此精确帮助您是不现实的。但是在官方文档中你会发现很多python中的webdriver code examples

0

我在使用Selenium进行拼贴的一个具体原因是为了确保在我开始搜索内容之前,每个页面的JavaScript创建部分都已完全呈现。我用这条线要等我要加载的内容:

WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.XPATH, my_xpath))) 

的“30”是30秒等待计时器,如果超过这个值,然后一个TimeoutException发生,所以你会希望把它放在一个try ... except:块。更改my_xpath以匹配您想要的标签。即使样式被标记为隐藏,Selenium仍然可以看到它。