Python Selenium Явные ключи ожидания и отправки с xpath - PullRequest
0 голосов
/ 13 января 2020

Я работаю над тем, чтобы ускорить очистку веб-страниц Selenium, заменив implicitly_wait на WebDriverWait на send_keys и click. Я немного запутался, как этого добиться.

Это мой код для inplicitly_wait:

def ncd_web_scraping(df):
    df['new_column'] = 'Not_sure'
    url = 'url'
    for i in df.index:
        driver = webdriver.Chrome()
        driver.implicitly_wait(5)
        driver.get(url)
        name = driver.find_element_by_xpath('//*[@id="person"]')
        name.send_keys(df.loc[i, 'Name'])
        state = driver.find_element_by_xpath('//*[@id="state"]')
        state.send_keys(df.loc[i, 'State'])
        botton = driver.find_element_by_xpath('/html/body/div[2]/form/button')
        botton.click()

        soup = BeautifulSoup(driver.page_source, 'html.parser')
        if soup.find('h5'):
            df.loc[i, 'new_column'] = 'Yes'
        else:
            df.loc[i, 'new_column'] = 'No'


    return df

Может кто-нибудь помочь мне с тем, как webDriveWait переписать код?

Я ценю вашу помощь.

1 Ответ

0 голосов
/ 13 января 2020

Замена на WebDriverWait Ваш эффективный блок кода будет:

def ncd_web_scraping(df):
    df['new_column'] = 'Not_sure'
    url = 'url'
    for i in df.index:
        driver = webdriver.Chrome()
        driver.get(url)
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='person']"))).send_keys(df.loc[i, 'Name'])
        driver.find_element_by_xpath('//*[@id="state"]').send_keys(df.loc[i, 'State'])
        driver.find_element_by_xpath('/html/body/div[2]/form/button').click()
        soup = BeautifulSoup(driver.page_source, 'html.parser')
        if soup.find('h5'):
            df.loc[i, 'new_column'] = 'Yes'
        else:
            df.loc[i, 'new_column'] = 'No'
    return df

Примечание : необходимо добавить следующие импорты :

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...