Python l oop через страницы сайта с использованием Selenium - PullRequest
0 голосов
/ 13 марта 2020

Я потратил немало времени на это и надеюсь получить некоторую помощь ... Я новичок в Python и поиске в Интернете.

Я захожу на веб-сайт с использованием учетных данных, поэтому не могу поделиться ссылкой, но она довольно проста, и у меня большая часть кода. Используя Selenium, я могу получить доступ к веб-сайту, ввести свои учетные данные, получить доступ к таблице, получить нужные данные, создать фрейм данных и go перейти на следующую страницу. Но я хотел бы автоматически l oop пройти через все страницы (с некоторыми паузами и быть добрым к сайту) и добавить каждую страницу к мастеру. Это то, что у меня есть до сих пор:

driver = webdriver.Chrome()
driver.get('website')
username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")

username.send_keys("username")
password.send_keys("password"+"\n")

driver.implicitly_wait(20)

table = driver.find_element_by_id('preblockBody')

information = []
job_elems = table.find_elements_by_xpath("//*[contains(@class,'pbListingTable')]")
for value in job_elems:
    #print(value.text)
    information.append(value.text)

nxt=driver.find_element_by_xpath("//a[contains(@href, 'gotoNextPage(2)')]")
driver.execute_script("arguments[0].click();", nxt)

Я думаю, что лучший способ - найти все ссылки на gotoNextPage и создать al oop, но я не уверен, как это сделать. Любая помощь очень ценится.

1 Ответ

0 голосов
/ 13 марта 2020

ОБНОВЛЕНИЕ 1:

Я нашел кое-что полезное, когда я использую «Далее» вместо того, чтобы щелкать по указанному c элементу «gotoNextPage». Вот мой новый код, однако, он только добавляет последнюю страницу информации, а не добавляется по мере прохождения страниц. Это очень близко!

driver = webdriver.Chrome()
driver.get('website')
username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")

username.send_keys("user name")
password.send_keys("password"+"\n")

while True:
    driver.implicitly_wait(30)
    table = driver.find_element_by_id('preblockBody')
    information = []
    job_elems = table.find_elements_by_xpath("//*[contains(@class,'pbListingTable')]")
    for value in job_elems:
    #print(value.text)
        information.append(value.text)

    try:
        driver.find_element_by_partial_link_text('Next').click()
    except:
        break

driver.quit()
print(information)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...