Selenium Python:元素不相互作用
我正在尝试从此网站刮擦信息示例网站
我需要获得2021版并搜索代码。 这是我的代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions
ignored_exceptions=(NoSuchElementException,StaleElementReferenceException)
options = Options()
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9515')
options.add_argument('--disable-setuid-sandbox')
options.add_argument("--start-maximized")
driver = webdriver.Chrome(service=Service("/usr/bin/chromedriver"), options=options)
url = "https://noc.esdc.gc.ca/"
driver.get(url)
search_by_code = WebDriverWait(driver, 10, ignored_exceptions=ignored_exceptions)\
.until(expected_conditions.presence_of_element_located((By.XPATH, "/html/body/main/div[2]/div/div/div/div/div/div/div/div/ul/li[2]/a")))
# click to activate this option
search_by_code.click()
text_area = WebDriverWait(driver, 10, ignored_exceptions=ignored_exceptions)\
.until(expected_conditions.presence_of_element_located((By.XPATH, "/html/body/main/div[2]/div/div/div/div/div/div/div/div/div/details[2]/div/div/form/div/div[2]/div/input")))
version = Select(WebDriverWait(driver, 10, ignored_exceptions=ignored_exceptions)\
.until(expected_conditions.presence_of_element_located((By.XPATH, "/html/body/main/div[2]/div/div/div/div/div/div/div/div/div/details[2]/div/div/form/div/div[1]/select"))))
search_button = driver.find_element(By.XPATH, '/html/body/main/div[2]/div/div/div/div/div/div/div/div/div/details[2]/div/div/form/div/div[2]/div/div/button')
# select version 2021
version.select_by_value('2021.0')
# click on text area
text_area.click()
# type the text
text_area.send_keys("10010 – Financial managers")
# click the button
search_button.click()
print(source = driver.current_url)
我不确定我错过了什么?我添加了一些评论来描述逻辑。
I am trying to scrape information from this website example website
I need to get the version 2021 and search by code.
Here is my code:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions
ignored_exceptions=(NoSuchElementException,StaleElementReferenceException)
options = Options()
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9515')
options.add_argument('--disable-setuid-sandbox')
options.add_argument("--start-maximized")
driver = webdriver.Chrome(service=Service("/usr/bin/chromedriver"), options=options)
url = "https://noc.esdc.gc.ca/"
driver.get(url)
search_by_code = WebDriverWait(driver, 10, ignored_exceptions=ignored_exceptions)\
.until(expected_conditions.presence_of_element_located((By.XPATH, "/html/body/main/div[2]/div/div/div/div/div/div/div/div/ul/li[2]/a")))
# click to activate this option
search_by_code.click()
text_area = WebDriverWait(driver, 10, ignored_exceptions=ignored_exceptions)\
.until(expected_conditions.presence_of_element_located((By.XPATH, "/html/body/main/div[2]/div/div/div/div/div/div/div/div/div/details[2]/div/div/form/div/div[2]/div/input")))
version = Select(WebDriverWait(driver, 10, ignored_exceptions=ignored_exceptions)\
.until(expected_conditions.presence_of_element_located((By.XPATH, "/html/body/main/div[2]/div/div/div/div/div/div/div/div/div/details[2]/div/div/form/div/div[1]/select"))))
search_button = driver.find_element(By.XPATH, '/html/body/main/div[2]/div/div/div/div/div/div/div/div/div/details[2]/div/div/form/div/div[2]/div/div/button')
# select version 2021
version.select_by_value('2021.0')
# click on text area
text_area.click()
# type the text
text_area.send_keys("10010 – Financial managers")
# click the button
search_button.click()
print(source = driver.current_url)
I am not sure what I have missed? I added some comments to describe the logic.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以为此网站使用
python-Requrequests
库。我在下面完成了一些脚本以发送请求并获取数据。您可以将查询发送到searchCriteria.codesearch
值。您可以使用bs4
,lxml
,或scrapy selector类
,并通过xpath
或a来定位值CSS选择器
。You can use the
python-requests
library for this website. I have done a little script below to send requests and get the data. You can send your query toSearchCriteria.CodeSearch
value. You can useBS4
,LXML
, orScrapy Selector class
and target the values byXPATH
or aCSS selector
.