【问题标题】:(Python) Scraping data from a website with 'style:hidden' tags?(Python)使用“样式:隐藏”标签从网站上抓取数据?
【发布时间】:2013-03-30 15:13:57
【问题描述】:

我正在使用 Selenium 尝试从网站获取数据。但是我想要的数据存储在“隐藏”标签中,所以当我拉出源时它是不可见的。有没有办法解决这个问题?有不同类型的隐藏吗?

我认为它是隐藏的,因为我也在使用 Firebug,它可以在我试图抓取的页面上看到源代码,但它“灰色”掉了那个源,我读过这表明源被 style:hidden 标签隐藏。

【问题讨论】:

  • 您是否可以使用 urllib2 或类似方法提取 HTML?如果是这样,在那里寻找它,也许你可以用 Beautiful Soup 处理它以获得隐藏的标签。
  • 我可以提取它,但是其中缺少大量内容。它只是不存在。
  • 你能提供你感兴趣的网站的网址吗?
  • 我会给出网址,但需要登录才能看到。对不起。

标签: python css web-scraping web-crawler


【解决方案1】:

可能发生的情况是网站正在通过 JavaScript 和/或 XMLHttpRequest 或 CSS 加载附加数据。 Firebug 会在完成后向您显示 DOM。使用 Webdriver,您可以引导浏览器加载页面并与之交互。一旦存在特定的用户交互,当给出一些附加信息时就会出现问题。因此,缓解这种情况的一种方法是使用 webdriver 来引导浏览器并执行相同的操作序列,以便 DOM 会相应地发生变化。

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

鉴于您没有提供任何代码示例来说明您正在尝试做什么,因此准确地帮助您是不现实的。但是你会在官方文档的python中找到大量的webdriver code examples

【讨论】:

    【解决方案2】:

    我使用 Selenium 抓取的具体原因之一是确保在开始搜索内容之前,每个页面的 javascript 创建部分都已完全呈现。我用这一行来等待我要加载的内容:

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

    '30' 是一个 30 秒的等待计时器,如果超过此时间,则会发生 TimeoutException,因此您需要将其放入 try ... except: 块中。更改 my_xpath 以匹配您想要的标签。即使样式被标记为隐藏,Selenium 仍然可以看到它。

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2018-11-25
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多