以前的网络爬虫无法识别元素 ID
previous web crawler doesn't recognize element id
我是网络抓取任务的新手。之前我试过下面这个简单的爬虫,效果不错。
最近我回到代码并尝试在爬虫上做更多的事情,但是 browser.find_element_by_id("lst-ib") 不起作用,我收到的错误是
' 没有这样的元素:无法定位元素:{"method":"css selector","selector":"[id="lst-ib"]"}
(会话信息:chrome=84.0.4147.89)'
为了解决我的问题,我试图从检查中找到 google 页面的输入文本框的 xpath。总是这样吗?我们为爬虫定义的 id 或 css 选择器是否定期更改并且我们应该更新代码?
from selenium import webdriver
url = "https://www.google.com"
browser = webdriver.Chrome(executable_path = "chromedriver")
browser.get(url)
#inputElement = browser.find_element_by_id("lst-ib")
# I replace the xpath with previous id
inputElement =
browser.find_element_by_xpath("/html/body/div/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input")
inputElement.send_keys("my input search text")
inputElement.submit()
browser.quit()
尝试以下 xpath :
inputElement =
browser.find_element_by_xpath("//body[@id='gsr']/div[@id='viewport']/div[@id='searchform']/form[@id='tsf']/div/div/div/div/div/input[1]")
inputElement.send_keys("my input search text")
您的解决方案:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome(executable_path=r"path of chrome driver")
wait = WebDriverWait(driver, 10)
driver.get("https://www.google.com")
inputElement = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "/html/body/div/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input")))
inputElement.send_keys("my input search text")
输出:
我是网络抓取任务的新手。之前我试过下面这个简单的爬虫,效果不错。 最近我回到代码并尝试在爬虫上做更多的事情,但是 browser.find_element_by_id("lst-ib") 不起作用,我收到的错误是
' 没有这样的元素:无法定位元素:{"method":"css selector","selector":"[id="lst-ib"]"} (会话信息:chrome=84.0.4147.89)'
为了解决我的问题,我试图从检查中找到 google 页面的输入文本框的 xpath。总是这样吗?我们为爬虫定义的 id 或 css 选择器是否定期更改并且我们应该更新代码?
from selenium import webdriver
url = "https://www.google.com"
browser = webdriver.Chrome(executable_path = "chromedriver")
browser.get(url)
#inputElement = browser.find_element_by_id("lst-ib")
# I replace the xpath with previous id
inputElement =
browser.find_element_by_xpath("/html/body/div/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input")
inputElement.send_keys("my input search text")
inputElement.submit()
browser.quit()
尝试以下 xpath :
inputElement =
browser.find_element_by_xpath("//body[@id='gsr']/div[@id='viewport']/div[@id='searchform']/form[@id='tsf']/div/div/div/div/div/input[1]")
inputElement.send_keys("my input search text")
您的解决方案:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome(executable_path=r"path of chrome driver")
wait = WebDriverWait(driver, 10)
driver.get("https://www.google.com")
inputElement = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "/html/body/div/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input")))
inputElement.send_keys("my input search text")
输出: