В результатах поиска на сайте jobquest (http://jobquest.detma.org/JobQuest/Training.aspx), Я хотел бы использовать селен, чтобы щелкнуть ссылку «следующая», чтобы загрузить следующую таблицу результатов из 20 записей с разбивкой по страницам.первые 20 результатов. Вот мои шаги, которые позволили мне так далеко:
Step1 : Я загружаю начальную страницу.
import requests, re
from bs4 import BeautifulSoup
from selenium import webdriver
browser = webdriver.Chrome('../chromedriver')
url ='http://jobquest.detma.org/JobQuest/Training.aspx'
browser.get(url)
Step2 : Я нахожу кнопку поиска и нажимаю ее, чтобы запросить поиск без критериев поиска. После этого кода страница результатов поиска загружается с первыми 20 записями в таблице:
submit_button = browser.find_element_by_id('ctl00_ctl00_bodyMainBase_bodyMain_btnSubmit')
submit_button.click()
Step3 : Теперь на странице результатов поиска я создаю суп и "find_all", чтобы получить правильные строки
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
rows = soup.find_all("tr",{"class":"gvRow"})
На этом этапе я могу получить свои данные (идентификаторы заданий) с первой страницырезультаты с использованием объекта row, например:
id_list=[]
for row in rows:
temp = str(row.find("a"))[33:40]
id_list.append(temp)
ВОПРОС - Step4 Help !! Чтобы перезагрузить таблицу со следующими 20 результатами, я должен нажать на ссылку «Далее» в результатах.Я использовал Chrome для проверки и получил следующие данные:
<a href="javascript:__doPostBack('ctl00$ctl00$bodyMainBase$bodyMain$egvResults$ctl01$ctl08','')">Next</a>
Мне нужен код, чтобы программно нажать Далее и переделать суп со следующими 20 записями.Я ожидаю, что, если бы я мог понять это, я мог бы выяснить, как зациклить код, чтобы получить все ~ 1515 идентификаторов в базе данных.
ОБНОВЛЕНИЕ Строка, которая работала для меня, предложилав ответ:
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[href*=ctl08]'))).click()
Спасибо, это было очень полезно.