Временные метки всплывающих окон в ObjectIds подробно описывают запросы, основанные на датах, встроенных в ObjectId.
Коротко в JavaScript-коде:
// This function returns an ObjectId embedded with a given datetime
// Accepts both Date object and string input
function objectIdWithTimestamp(timestamp) {
// Convert string date to Date object (otherwise assume timestamp is a date)
if (typeof(timestamp) == 'string') {
timestamp = new Date(timestamp);
}
// Convert date object to hex seconds since Unix epoch
var hexSeconds = Math.floor(timestamp/1000).toString(16);
// Create an ObjectId with that hex timestamp
var constructedObjectId = ObjectId(hexSeconds + "0000000000000000");
return constructedObjectId
}
// Find all documents created after midnight on May 25th, 1980
db.mycollection.find({ _id: { $gt: objectIdWithTimestamp('1980/05/25') } });
Вы можете использовать селектор атрибута = значение для нацеливания на href
. В этом случае я использую подстроку в конце с помощью оператора содержимого (*
).
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[href*=ctl08]'))).click()
Я добавляю в ожидании кликабельного состояния в качестве меры предосторожности. Вы могли бы, вероятно, удалить это.
Дополнительный импорт
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
Без условия ожидания:
browser.find_element_by_css_selector('[href*=ctl08]'),click()
Другой способ:
Теперь вместо этого вы может изначально установить счетчик результатов страницы равным 100 (максимум), а затем перебрать выпадающий список страниц результатов для загрузки каждой новой страницы (тогда вам не нужно работать над количеством страниц)
import requests, re
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
url ='http://jobquest.detma.org/JobQuest/Training.aspx'
browser.get(url)
submit_button = browser.find_element_by_id('ctl00_ctl00_bodyMainBase_bodyMain_btnSubmit')
submit_button.click()
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[value="100"]'))).click()
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
rows = soup.find_all("tr",{"class":"gvRow"})
id_list=[]
for row in rows:
temp = str(row.find("a"))[33:40]
id_list.append(temp)
elems = browser.find_elements_by_css_selector('#ctl00_ctl00_bodyMainBase_bodyMain_egvResults select option')
i = 1
while i < len(elems) / 2:
browser.find_element_by_css_selector('#ctl00_ctl00_bodyMainBase_bodyMain_egvResults select option[value="' + str(i) + '"]').click()
#do stuff with new page
i+=1
[ 1113] Вы сами решаете, что делать с извлечением информации о строках с каждой страницы. Это должно было дать вам простую структуру для зацикливания всех страниц.