簡體   English   中英

使用硒抓取內容不起作用

[英]scraping content using selenium not working

我正在嘗試使用 selenium 登錄此網站 所以我導入了網絡驅動程序,為了將登錄信息發送到該頁面,我還導入了密鑰。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

這是我用來准備硒的,

chromedriver = "chromedriver.exe"
browser = webdriver.Chrome(chromedriver)
browser.get("https://m.adidas.com/us/myaccount-create-or-login")

我讓瀏覽器使用“隱式等待功能”等待頁面加載

網站中的用戶名欄有這樣的HTML內容,

 <input type="text" value="" placeholder="* EMAIL" data-placeholder="* Email" maxlength="50" class="textinput required trimspace" name="username" id="username">

對於密碼,它有

 <input type="password" placeholder="* PASSWORD" data-placeholder="* Password" maxlength="50" autocomplete="off" name="password" value="" class="textinputpw required" id="password">

我用上面的代碼找到了兩個元素的id,然后我寫了這段代碼來發送個人信息

username1 = browser.find_element_by_id("username")
password1 = browser.find_element_by_id("password")
username1.send_keys(email.get()) # Used a gui entry box so why email.get()
password1.send_keys(password.get())

但是上面的代碼沒有發送信息我不知道為什么會這樣? 你能幫我解決這個問題嗎?

我也嘗試使用 x 路徑發送密鑰。 打印頁面源以檢查網站會產生 403 Access denied 錯誤,但這不是我的情況。

如果有任何問題,我是新手

編輯:- 我的嘗試:

username1 = browser.find_element_by_id("username")
browser.switch_to.frame(username1)
password1 = browser.find_element_by_id("password")
browser.switch_to.frame(password1)
username1.send_keys(email.get()) # Used a gui entry box so why email.get()
password1.send_keys(password.get())

您嘗試訪問的元素位於IFRAME

<iframe id="loginaccountframe" class="sso-iframe" src="https://cp.adidas.com/web/eCom/en_US/loadsignin?target=account" frameborder="0" scrolling="no"></iframe>

您需要先切換到 IFRAME,然后才能看到它們。

http://selenium-python.readthedocs.io/navigating.html#moving-between-windows-and-frames

實際上@JeffC是對的,有一個iframe 因此,在iframe查找元素之前,您必須切換該iframe

正如您在評論中提到的:-

我試過添加 browser.switch_to.frame(username1)

您實際上是將username1元素切換為假設錯誤的iframe元素。

您需要單獨查找iframe元素作為您嘗試查找的其他元素,然后切換到該 iframe 元素。 但是在這里您可以使用其id切換到iframe ,如下所示:-

browser.switch_to.frame("loginaccountframe")

#now do your login stuff inside iframe
username1 = browser.find_element_by_id("username")
username1.send_keys(email.get()) # Used a gui entry box so why email.get()

password1 = browser.find_element_by_id("password")
password1.send_keys(password.get())

#now after doing all stuff inside iframe you need to switch back to default content for further steps 
browser.switch_to.default_content()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM