2016-11-23 75 views
0

我試圖從https://www.bcbsga.com/health-insurance/provider-directory/searchcriteria中檢索醫生姓名,他們的地址和其他字段。我在下面附上我的代碼。我不確定在最後的'for'循環中有什麼問題,我得到了下面的輸出,而不是網站上的數據。Python Selenium Webdriver - 從網站檢索連續數據

selenium.webdriver.remote.webelement.WebElement (會話= 「ba8c85ad6e398939063d5b43ee513668」,元素= 「0.6436841330730552-19」)> selenium.webdriver.remote.webelement.WebElement(會話= 「ba8c85ad6e398939063d5b43ee513668」,元素=」 0.6436841330730552-20「)>

import time 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

divID = 'ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireInsurance_chosen' 
inputID = 'ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireInsurance_chosen_input' 
inputValue = 'I buy it myself (or plan to buy it myself)' 

driver = webdriver.Chrome() 

driver.get("https://www.bcbsga.com/health-insurance/provider-directory/searchcriteria") 
driver.find_element_by_id("btnGuestContinue").click() 
driver.implicitly_wait(10) 

driver.find_element_by_id('ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireInsurance_chosen').click() 
driver.find_element_by_id('ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireInsurance_chosen_input').send_keys('I buy it myself (or plan to buy it myself)') 
driver.find_element_by_id('ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireInsurance_chosen_input').send_keys(Keys.RETURN) 

driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireWhobought_chosen").click() 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireWhobought_chosen_input").send_keys("Marketplace/exchanges") 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireWhobought_chosen_input").send_keys(Keys.RETURN) 

driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireState_chosen").click() 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireState_chosen_input").send_keys("Georgia") 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlQuestionnaireState_chosen_input").send_keys(Keys.RETURN) 

driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlCareTypes_chosen").click() 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlCareTypes_chosen_input").send_keys("Medical") 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlCareTypes_chosen_input").send_keys(Keys.RETURN) 

driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlquestionnairePlanNetworks_chosen").click() 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlquestionnairePlanNetworks_chosen_input").send_keys("All plans/networks selection") 
driver.find_element_by_id("ctl00_MainContent_maincontent_PFPlanQuestionnaire_ddlquestionnairePlanNetworks_chosen_input").send_keys(Keys.RETURN) 

driver.find_element_by_id("btnGuestQuestionnaireContinue").click() 

#'located near' field 
driver.find_element_by_id("ctl00_MainContent_maincontent_pfSearchMain_pfLocationSearch_txtZipCityState").send_keys("30303") 

#within a distance of 
driver.find_element_by_id("ctl00_MainContent_maincontent_pfSearchMain_pfLocationSearch_ddlRadius_chosen").click() 
driver.find_element_by_id("ctl00_MainContent_maincontent_pfSearchMain_pfLocationSearch_ddlRadius_chosen_input").send_keys("10 miles") 
driver.find_element_by_id("ctl00_MainContent_maincontent_pfSearchMain_pfLocationSearch_ddlRadius_chosen_input").send_keys(Keys.RETURN) 
#speciality 
driver.find_element_by_id("ctl00_MainContent_maincontent_pfSearchMain_ddlSpeciality_chosen").click() 
driver.find_element_by_id("ctl00_MainContent_maincontent_pfSearchMain_ddlSpeciality_chosen_input").send_keys("Cardiology") 
driver.find_element_by_id("ctl00_MainContent_maincontent_pfSearchMain_ddlSpeciality_chosen_input").send_keys(Keys.RETURN) 
#click the search button 
driver.find_element_by_id("btnSearch").click() 
time.sleep(10) 

for i in range(10): 
     name = driver.find_element_by_id("ctl00_ResultsList_ctrl" + str(i) + "_lnkName") 
     address = driver.find_element_by_id("ctl00_ResultsList_ctrl" + str(i) + "_lblAddress") 
     print(name, address) 

driver.close() 

回答

1

的問題是,find_element_by_id應返回的網絡元素,而不是文本節點,所以很明顯nameaddress是網頁元素。您應該使用

for i in range(10): 
    name = driver.find_element_by_id("ctl00_ResultsList_ctrl" + str(i) + "_lnkName").text 
    address = driver.find_element_by_id("ctl00_ResultsList_ctrl" + str(i) + "_lblAddress").text 
    print(name, address) 
1

我想我在最後的'for'循環中省略了.text字段。添加它們會檢索元素的名稱!

for i in range(10): 
     name = driver.find_element_by_id("ctl00_ResultsList_ctrl" + str(i) + "_lnkName").text 
     address = driver.find_element_by_id("ctl00_ResultsList_ctrl" + str(i) + "_lblAddress").text 
     print(name, address) 
+0

也許你應該檢查你的腳本的最後兩行... – gus27

+0

是的,我懂了工作,犯了一個錯誤,而編輯在這裏。謝謝! – Srikanth