2015-09-17 167 views
4

我想抓住一个房地产网站上市。它有一个aspx表格,必须在提交之前填写。Selenium无法找到元素(Python)WebScraping

http://www.cbre.us/PropertyListings/Pages/Properties-for-Sale.aspx

所有我关心的是在俄勒冈州多户性质,但是。所以这是我第一次尝试。

driver = webdriver.Firefox() 

driver.get("http://www.cbre.us/PropertyListings/Pages/Properties-for-Sale.aspx") 

#Searching for multifamily residences 
selectPropertyType = driver.find_element_by_id("ForSalePropertyType") 
selectPropertyType.select_by_value("70") 

#In the state of Oregon 
selectState = driver.find_element_by_id("ForSaleState_ListBox1") 
selectState.select_by_value("OR") 

#Submit form 
submitBtn = driver.find_element_by_id("ForSaleLooplinkSubmit") 
submitBtn.click() 

#Wait for results to load 
WebDriverWait(driver, 5) 

当我运行此脚本它提供了一个错误“无法找到元素‘ForSalePropertyType’我在做什么错在这里先谢谢

回答

5

这个元素? 。位于一个iframe内你必须切换到它的上下文

driver.switch_to.frame("ctl00_PlaceHolderMain_IFrameContent_IFrameContent") 

# searching for multifamily residences 
selectPropertyType = driver.find_element_by_id("ForSalePropertyType") 
selectPropertyType.select_by_value("70") 

要回到默认上下文:

driver.switch_to.default_content() 

作为一个侧面说明,要知道在Disclaimer/Terms of use列出的政策,特别是:

您同意不会:(一)冒充任何人或实体或 误传你与任何其他人或实体的联系; (b) 参与垃圾邮件,淹没,收集电子邮件地址或其他 个人信息,蜘蛛抓取,屏幕抓取,数据库抓取, 或任何其他活动,目的是获取用户列表或 任何其他信息,特别包括通过该网站提供的房产清单 ; (c)通过网站发送连锁信或传销 ;或(d)试图通过该网站未经授权访问其他 计算机系统。您同意,您不会以任何可能损坏,禁用,超负荷或损害该网站或干扰任何其他方使用和享受 网站的方式使用该网站。

+0

正式注意。感谢您的帮助。 –

+0

请参阅http://stackoverflow.com/help/someone-answers。另外,看看你之前发布的问题是否有答案,应该被接受,比如这个,例如:http://stackoverflow.com/questions/32493807/selecting-specific-table-cells-in-硒的网络驱动程序蟒蛇。 – alecxe