简体   繁体   English

如何使用 selenium 抓取登录网站

[英]How to scrape the login website using selenium

from selenium import webdriver

from time import sleep

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.3"
}

driver= webdriver.Chrome('C:\Program Files (x86)\chromedriver.exe')
driver.get('https://www.counselingcalifornia.com/Find-a-Therapist')
driver.find_element_by_id("language_field").click("option",value="ENG")
driver.find_element_by_id(searchBtn).click()
print("successfully")

I am trying to scrape data but first Click on Language, select English, then click advanced search but they will give me error these is website https://www.counselingcalifornia.com/Find-a-Therapist我正在尝试抓取数据,但首先单击语言,选择英语,然后单击高级搜索,但他们会给我错误这些是网站https://www.counselingcalifornia.com/Find-a-Therapist

The reason is iframe.原因是 iframe。

language drop down is in iframe.语言下拉菜单在 iframe 中。 In Selenium automation, if the webelements are wrapped inside an iframe, we should always switch to iframe first then we can interact with the elements.在 Selenium 自动化中,如果 webelement 被包裹在 iframe 中,我们应该总是先切换到 iframe,然后我们才能与元素进行交互。

Code :代码 :

driver = webdriver.Chrome(driver_path)
driver.maximize_window()

wait = WebDriverWait(driver, 30)

driver.get("https://www.counselingcalifornia.com/Find-a-Therapist")

wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe[id$='IFrame_htmIFrame']")))
select = Select(wait.until(EC.visibility_of_element_located((By.ID, "language_field"))))
select.select_by_value('ENG')

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a#searchBtn"))).click()

Imports :进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select

If there was error related to the chromedriver version, then please install the latest version of the driver.如果出现与 chromedriver 版本相关的错误,请安装最新版本的驱动程序。 You have a syntax error in your code.您的代码中有语法错误。 Include your searchBtn id in double-quotes.在双引号中包含您的searchBtn id。

driver.find_element_by_id("searchBtn").click()

from selenium import webdriver

from time import sleep

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.3"
}

driver= webdriver.Chrome('C:\Program Files (x86)\chromedriver.exe')
driver.get('https://www.counselingcalifornia.com/Find-a-Therapist')
driver.find_element_by_id("language_field").click("option",value="ENG")
driver.find_element_by_id("searchBtn").click()
print("successfully")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM