【发布时间】:2021-08-29 08:39:00
【问题描述】:
我正在尝试抓取此网址https://www.veikkaus.fi/fi/tulokset#!/tarkennettu-haku
刮擦主要分为三个部分:
- 从“Valitse peli”中选择正确的游戏类型
为此,我想选择“Eurojackpot” - 从变量中设置日期范围。在完整版中,我将根据 12 周范围限制生成日期。现在我只选择了两个足够接近的日期。这个日期范围需要输入到“Näytä tulokset aikaväliltä”下面的两个输入字段中
- 我需要点击显示结果按钮。 (标记为“Näytä Tulokset”)
我相信我的代码第 1 部分和第 3 部分是正确的,但我在第 2 部分遇到了问题。由于某种原因,刮板没有将日期发送到元素。我试过click、clear,然后是send_keys。我也尝试先发送key_down(Keys.CONTROL),然后发送send_keys("a"),然后发送send_keys(date),但这些都不起作用。该网站总是回到它加载的日期(当前日期)。
这是我的完整代码:
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 12 12:05:40 2021
@author: Samu Kaarlela
"""
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.options import Options
url = "https://www.veikkaus.fi/fi/tulokset#!/tarkennettu-haku"
wd = r"C:\Users\Oppilas\Desktop\EJ prediction\scraper\chromedriver"
chrome_options = Options()
chrome_options.add_argument("--headless")
webdriver = webdriver.Chrome(
wd,
options=chrome_options
)
from_date = "05.05.2021"
to_date = "11.06.2021"
with webdriver as driver:
wait = WebDriverWait(driver,10)
driver.get(url)
game_type_element = driver.find_element_by_css_selector(
"#choose-game"
)
slc = Select(game_type_element)
slc.select_by_visible_text("Eurojackpot")
from_date_element = WebDriverWait(
driver,
20).until(
EC.element_to_be_clickable(
(
By.CSS_SELECTOR,
"#date-range div:nth-child(1) input"
)
)
)
ActionChains(driver). \
click(from_date_element). \
key_down(Keys.CONTROL). \
send_keys("a"). \
send_keys(from_date). \
perform()
print(from_date_element.get_attribute("value"))
driver.save_screenshot("./image.png")
driver.close()
编辑:
I just realized that when selected the input field goes from #date-range #from-date to #date-range #from-date #focus-visible
【问题讨论】:
标签: python css selenium web-scraping