我正在尝试从具有多个搜索字词的任何搜索网站下载图片。到目前为止,这就是我这样做的方法,但找不到使其与for in loop一起使用。您能否帮助我使其正常工作,就像我想传入关键字列表(在我的情况下为#elem.send_keys(“ spy”))一样,因此代码会针对列表中的每个项目进行迭代。我的循环原因示例;(
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
driver = webdriver.Chrome()
driver.get("https://anysearchwebsite.com/")
elem = driver.find_element_by_id("nav-chartSearch-input")
# ticker symbols array
symbols = ['spy', 'aapl', 'msft', 'amnz', 'goog']
count = 1
for i in symbols:
elem.send_keys(i)
# elem.send_keys("spy")
elem.send_keys(Keys.RETURN)
driver.implicitly_wait(2)
imgUrl = driver.find_element_by_css_selector(".chartimg").get_attribute("src")
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(imgUrl, str(count) + ".jpg")
count = count + 1
错误消息如下所示:[12080:4620:0104 / 151132.576:ERROR:ssl_client_socket_impl.cc(960)]握手失败;返回-1,SSL错误代码1,net_error -113追溯(最近一次通话):
selenium.common.exceptions.StaleElementReferenceException:消息:陈旧元素引用:元素未附加到页面文档中(会话信息:chrome = 87.0.4280.88)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
driver = webdriver.Chrome()
driver.get("https://anysearchwebsite.com/")
# ticker symbols array
symbols = ['spy', 'aapl', 'msft', 'amnz', 'goog']
count = 1
for i in symbols:
driver.find_element_by_css_selector("input[name='q']").send_keys(i+Keys.RETURN)
# elem.send_keys("spy")
driver.implicitly_wait(2)
imgUrl = driver.find_element_by_css_selector(".chartimg").get_attribute("src")
opener = urllib.request.build_opener()
opener.addheaders = [
('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(imgUrl, str(count) + ".jpg")
count = count + 1
driver.back()
只需在if语句中找到元素,并在需要时使用driver.back
陈旧的元素表示Dom已更改,当您搜索dom更改的内容时,当您尝试在第二次迭代中将值再次发送给已识别的元素elem时,它将引发陈旧的元素异常
解决方法是在for循环本身中查找元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句