#获取了页面所有链接,但是不能去获取一个一个链接里面的数据
import requests
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get('https://www.amazon.de/')
word = input('请输入你需要的关键词:')
driver.find_element(by=By.NAME, value="field-keywords").send_keys(word)
sleep(2)
driver.find_element(By.XPATH, "//input[@type='submit']").click()
driver.find_element(By.ID, "nav-search-submit-button").click()
url = 'https://www.amazon.de/s?k={}'.format(word)
headers = {
'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0',
'Referer': 'https://www.amazon.de/'
}
res = requests.get(url=url, headers=headers)
html_data = res.text
for links in driver.find_elements(By.XPATH,
'//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style '
'a-text-normal"]'):
sleep(1)
print(links.get_attribute('href'))
a = []
for links in driver.find_elements(By.XPATH,
'//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style '
'a-text-normal"]'):
sleep(1)
print(links.get_attribute('href'))
a.append(links.get_attribute('href'))
driver.find_element(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style '
'a-text-normal"]').click()
driver.find_element(By.ID, "sellerProfileTriggerId").click()
box = driver.find_element(By.XPATH, "/html/body/div[1]/div[2]/div/div/div/div/div[9]/div/div/div").text
print(box)
driver.back()
driver.back()
for i in adriver.find_element(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style '
'a-text-normal"]').click():
print(i)
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style a-text-normal"]')))
element.click()
#问题报错为
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/pythonProject/amzone/进阶.py", line 36, in <module>
print(links.get_attribute('href'))
File "F:\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 179, in get_attribute
f"/* getAttribute */return ({getAttribute_js}).apply(null, arguments);", self, name
File "F:\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 500, in execute_script
return self.execute(command, {"script": script, "args": converted_args})["value"]
File "F:\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute
self.error_handler.check_response(response)
File "F:\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: The element with the reference d629e098-386b-4e55-abac-2271d0ca6c39 is stale; either its node document is not the active document, or it is no longer connected to the DOM
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:182:5
StaleElementReferenceError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:484:5
element.getKnownElement@chrome://remote/content/marionette/element.sys.mjs:488:11
deserializeJSON@chrome://remote/content/marionette/json.sys.mjs:233:33
cloneObject/result<@chrome://remote/content/marionette/json.sys.mjs:50:52
cloneObject@chrome://remote/content/marionette/json.sys.mjs:50:25
deserializeJSON@chrome://remote/content/marionette/json.sys.mjs:244:16
cloneObject@chrome://remote/content/marionette/json.sys.mjs:56:24
deserializeJSON@chrome://remote/content/marionette/json.sys.mjs:244:16
json.deserialize@chrome://remote/content/marionette/json.sys.mjs:248:10
receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:85:30
#初步解决driver.refresh和time.sleep但是还是出现原有的报错