我的code:
import selenium.webdriver.support.ui as ui# 必要每五秒檢元素是否存在
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
PATH = "C:/Users/藥頭/Desktop/爬蟲學習/搶票/chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://www.dcard.tw/f") #選擇網站
time.sleep(5)
search = driver.find_element_by_name("query")#搜尋欄位
search.send_keys("BTC")#搜尋
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
出現這樣子
[9796:12916:0628/004758.023:ERROR:device_event_log_impl.cc(214)] [00:47:58.022] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: 連結到系統的某個裝置失去作用。 (0x1F)
Traceback (most recent call last):
File "c:\Users\藥頭\Desktop\爬蟲學習\搶票\t.py", line 10, in
search = driver.find_element_by_name("query")#搜尋欄位
AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'
會像下面這張圖一樣,可以問一下大家這個要怎麼解嗎,上網爬過很多文了可是弄了三天還是弄不出來
使用 : VScode + Python3.10.5 + ChromeDriver103.0.5060.53
作業系統 : Win10 64 位元
先確認 selenium 版號
版號 4.X 開始, find_element_by_XXX / find_elements_by_XXX 已經棄用,
請改用 find_element(By.XXX, 定位字串) / find_elements(By.XXX, 定位字串)
近幾年版號才更新成 4.X, 如果找尋2年前的文章, 照抄可能部分會失敗,
如果急的話, 可以選擇安裝舊版本的selenium暫時解決問題
ex
search = driver.find_element_by_name("query")
版本 4.0 以後需修改成
search = driver.find_element(By.NAME, "query")
# 如果程式碼未寫 from selenium.webdriver.common.by import By
# 請將 By.NAME 改成 "name"
# search = driver.find_element("name", "query")
find_element | find_element_by_XXX (4.0+已棄用) |
---|---|
find_element(By.ID, 定位字串) | find_element_by_id(定位字串) |
find_element(By.NAME, 定位字串) | find_element_by_name(定位字串) |
find_element(By.XPATH, 定位字串) | find_element_by_xpath(定位字串) |
find_element(By.LINK_TEXT, 定位字串) | find_element_by_link_text(定位字串) |
find_element(By.PARTIAL_LINK_TEXT, 定位字串) | find_element_by_partial_link_text(定位字串) |
find_element(By.TAG_NAME, 定位字串) | find_element_by_tag_name(定位字串) |
find_element(By.CLASS_NAME, 定位字串) | find_element_by_class_name(定位字串) |
find_element(By.CSS_SELECTOR, 定位字串) | find_element_by_css_selector(定位字串) |
可以下載這個套件
pip install webdriver-manager
然後把你的 code 換成
import selenium.webdriver.support.ui as ui# 必要每五秒檢元素是否存在
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.dcard.tw/f") #選擇網站
time.sleep(5)
search = driver.find_element(By.NAME, "query")#搜尋欄位
search.send_keys("BTC")#搜尋
另外請善用 code block 進行發問