Веб-сшивка сайта.ASPX с помощью Selenium и / или Scrapy

Я новичок в Python/Selenium и написал следующее в python /Windows, чтобы почистить демо 5484 врача в MA-Board of Reg. Сайт

Моя проблема: веб-сайт.aspx, поэтому я изначально выбрал Selenium. Тем не менее, буду очень признателен за любые идеи / рекомендации по кодированию следующих шагов (см. Ниже). Точнее, если будет эффективнее продолжать селен или включать в себя терапию? Любые идеи с благодарностью!

  1. Выберите гиперссылку каждого врача (1–10 на страницу), щелкнув каждую гиперссылку "PhysicianProfile.aspx?PhysicianID=XXXX" на странице "ChooseAPhysician".
  2. Следуйте за каждым и извлеките "Демографическую информацию" Демографическую информацию: "phy_name", "lic_issue_date", prim_worksetting и т. Д.
  3. Вернитесь на страницу "Выберите страницу врача", нажмите "Далее"
  4. Повторите для дополнительных 5474 врача

    from selenium import webdriver
    from selenium.webdriver.support.ui import Select
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()                         driver.get('http://profiles.ehs.state.ma.us/Profiles/Pages/ChooseAPhysician.aspx?Page=1')
    
    #Locate the elements
    zip = driver.find_element_by_xpath("//*[@id=\"ctl00_ContentPlaceHolder1_txtZip\"]")
    select = Select(driver.find_element_by_xpath("//select[@id=\"ctl00_ContentPlaceHolder1_cmbDistance\"]"))
    print select.options
    print [o.text for o in select.options]
    select.select_by_visible_text("15")
    prim_care_chekbox = driver.find_element_by_xpath("//*[@id=\"ctl00_ContentPlaceHolder1_SpecialtyGroupsCheckbox_6\"]")
    find_phy_button = driver.find_element_by_xpath("//*[@id=\"ctl00_ContentPlaceHolder1_btnSearch\"]")
    
    
    #Input zipcode, check "primary care box", and click "find phy" button
    zip.send_keys("02109")
    prim_care_chekbox.click()
    find_phy_button.click()
    
    #wait for "ChooseAPhysician" page to open
    wait = WebDriverWait(driver, 10)
    
    open_phy_bio = driver.find_element_by_xpath("//*[@id=\"PhysicianSearchResultGrid\"]/tbody/tr[2]/td[1]/a")
    element = wait.until(EC.element_to_be_selected(open_phy_bio))
    open_phy_bio.click()
    
    links = self.driver.find_element_by_xpath("//*[@id=\"PhysicianSearchResultGrid\"]/tbody/tr[2]/td[1]/a")
    for link in links:
        link = link.get_attribute("href")
        self.driver.get(link)
    
    def parse(self, response):
    item = SummaryItem()
    sel = self.selenium
    sel.open(response.url)
    time.sleep(4) 
    item["phy_name"] = driver.find_elements_by_xpaths("//*[@id=\"content\"]/center/p[1]").extract() 
    item["lic_status"] = driver.find_elements_by_xpaths("//*[@id=\"content\"]/center/table[2]/tbody/tr[3]/td/table/tbody/tr/td[1]/table/tbody/tr[2]/td[2]/a[1]").extract()
    item["lic_issue_date"] = driver.find.elements_by_xpaths("//*[@id=\"content\"]/center/table[2]/tbody/tr[3]/td/table/tbody/tr/td[1]/table/tbody/tr[3]/td[2]").extract()
    item["prim_worksetting"] = driver.find.elements_by_xpaths("//*[@id=\"content\"]/center/table[2]/tbody/tr[3]/td/table/tbody/tr/td[1]/table/tbody/tr[5]/td[2]").extract()
    item["npi"] = driver.find_elements_by_xpaths("//*[@id=\"content\"]/center/table[2]/tbody/tr[3]/td/table/tbody/tr/td[2]/table/tbody/tr[6]/td[2]").extract()
    item["Med_sch_grad_date"] = driver.find_elements_by_xpaths("//*[@id=\"content\"]/center/table[3]/tbody/tr[3]/td/table/tbody/tr[2]/td[2]").extract()
    item["Area_of_speciality"] = driver.find_elements_by_xpaths("//*[@id=\"content\"]/center/table[4]/tbody/tr[3]/td/table/tbody/tr/td[2]").extract()
    item["link"] =  driver.find_element_by_xpath("//*[@id=\"PhysicianSearchResultGrid\"]/tbody/tr[2]/td[1]/a").extract()
    
    
    return item
    

0 ответов

Другие вопросы по тегам