【问题标题】:How do I access the web page Inspect element content using python selenium?如何使用 python selenium 访问网页检查元素内容?
【发布时间】:2014-06-26 12:45:12
【问题描述】:

我要做的是抓取网页“http://www.trulia.com/property/1080560259-2-Penelope-Ln-Middletown-NJ-07748”。 In this when the tab Estimates (below Comparable and Estimates section) is selected the data below the google map is loaded dynamically. 此数据在页面源中不可见,但同时在开发者工具窗口(上下文菜单、检查元素)中可见。

我正在使用 Selenium 和 Python 2.7。有没有办法访问这些数据?或者有什么方法可以访问所有元素?

提前致谢。

【问题讨论】:

  • 查看我对更大范围问题的回答,从最新的代码清单开始,查看browser.page_source。答案是stackoverflow.com/questions/23386855/…
  • 谢谢。但这并不能解决我的问题。有没有办法访问开发工具窗口中列出的元素。生成的动态数据在页面源中不可见。我无法使用响应包,因为我没有新的 URL。默认情况下,Tab 1(可比较)数据来自源。我需要选项卡 2(估计)表数据。
  • 我需要的数据在 Dev Tools 窗口的 Elements 部分可见,但在源代码中不可见。

标签: python selenium web-scraping beautifulsoup


【解决方案1】:

由于它由 ajax 提供支持,因此您需要自己考虑。

我会这样做:(这是伪代码)

find_element_by_css_selector('a#dataset_nearby').click()
waitForElement('ul#places_map_module li.active table.table tr')

您可能需要摆弄选择器,但在 waitForElement 中,基本上您只需要对元素进行持续检查并等待它可用,然后再对其执行命令。

【讨论】:

  • 您好,感谢您的回复。但即使我等待该元素也不可见。在我尝试过的代码部分下面找到。导入 selenium.webdriver.support.ui as ui wait = ui.WebDriverWait(driver,30) wait.until(lambda driver:driver.find_element_by_css_selector('a#dataset_nearby')) driver.find_element_by_css_selector('a#dataset_nearby').click () 抛出 ElementNotVisibleException。
  • 改用find_elements,并检查length..这可能也有帮助
  • 我正在使用 find_element_by_id 并调用 click() 方法来选择网页中的 Tab Estimates。即使有等待时间,浏览器处理程序也无法使用新数据。它抛出相同的异常。我试过的代码是,pick_id = driver.find_element_by_id("dataset_nearby") pick_id.click() wait.until(lambda driver: driver.find_elements_by_css_selector('Home Estimates')) print driver.find_elements_by_css_selector('Home Estimates')跨度>
  • 每当点击 Tab 时,都会发送以下请求。获取 /_ajax/PDP/NearbyProperties/json/?tplname=small&bo...4&lon=-74.10724&block_pid=1080560259&fips_id=34025。如何在 Python 中发出等效请求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 2015-04-11
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多