以下錯誤不時彈出,而不總是出現在同一個地方。不完全確定爲什麼。任何線索?全部代碼在這裏:Full Code有時會出現錯誤,有時會出現在不同的地點
File "/Users/davidkasapchuk/PycharmProjects/Test/HomeDepotFridges.py", line 257, in price = item.find_element_by_class_name('product-display-price') File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 264, in find_element_by_class_name return self.find_element(by=By.CLASS_NAME, value=name) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 478, in find_element {"using": by, "value": value})['value'] File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 461, in _execute return self._parent.execute(command, params) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: {"errorMessage":"Unable to find element with class name 'product-display-price'","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"138","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:52314","User-Agent":"Python-urllib/3.5"},"httpVersion":"1.1","method":"POST","post":"{\"id\": \":wdc:1473895291967\", \"using\": \"class name\", \"sessionId\": \"eb417d30-7ad1-11e6-82c2-d52d6cd5b804\", \"value\": \"product-display-price\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/eb417d30-7ad1-11e6-82c2-d52d6cd5b804/element/:wdc:1473895291967/element"}} Screenshot: available via screen
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/Users/User/PycharmProjects/Test/HomeDepotFridges.py", line 266, in model = 'n/a'.text AttributeError: 'str' object has no attribute 'text'>
import csv
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
b = open('csv/homedepotfridges.csv', 'w', newline='')
a = csv.writer(b,delimiter=',')
driver = webdriver.PhantomJS()
driver.get('https://www.homedepot.ca/en/home/categories/appliances/refrigerators-and-freezers/refrigerators.html')
time.sleep(15)
items = []
for item in driver.find_elements_by_class_name('item'):
try:
model = item.find_element_by_class_name('product-model')
price = item.find_element_by_class_name('product-display-price')
title = item.find_element_by_class_name('product-title')
url = item.find_element_by_class_name('js-detail-link')
items.append({'model': model, 'price': price, 'title': title, 'url': url})
print (model.text, price.text, title.text, url.get_attribute("href"))
c = (model.text, price.text, title.text, url.get_attribute("href"))
a.writerow(c)
except NoSuchElementException:
model = 'n/a'.text
price = 'N/A'.text
title = 'N/A'.text
url = 'N/A'.text
items.append({'model': model, 'price': price, 'title': title, 'url': url})
print(model.text, price.text, title.text, url.get_attribute.text("href"))
c = (model.text, price.text, title.text, url.get_attribute("href"))
a.writerow(c)
b.close()
b = open('csv/homedepotfridges.csv', 'a', newline='')
a = csv.writer(b,delimiter=',')
driver = webdriver.PhantomJS()
driver.get('https://www.homedepot.ca/en/home/categories/appliances/refrigerators-and-freezers/refrigerators.html#!p=1&q=*%3Arelevance%3AcategoryPathHierarchy%3A3%2Fhd-classes%2Fl1-appliances%2Fl2-refrigerators-freezers%2F1010215')
time.sleep(15)
items = []
for item in driver.find_elements_by_class_name('item'):
try:
model = item.find_element_by_class_name('product-model')
price = item.find_element_by_class_name('product-display-price')
title = item.find_element_by_class_name('product-title')
url = item.find_element_by_class_name('js-detail-link')
items.append({'model': model, 'price': price, 'title': title, 'url': url})
print (model.text, price.text, title.text, url.get_attribute("href"))
c = (model.text, price.text, title.text, url.get_attribute("href"))
a.writerow(c)
except NoSuchElementException:
model = 'n/a'.text
price = 'N/A'.text
title = 'N/A'.text
url = 'N/A'.text
items.append({'model': model, 'price': price, 'title': title, 'url': url})
print(model.text, price.text, title.text, url.get_attribute.text("href"))
c = (model.text, price.text, title.text, url.get_attribute("href"))
a.writerow(c)
b.close()
它不。我添加了time.sleep(45),45秒等待,但仍然無法工作。看起來問題出在PhantomJS()上,就像我用Chrome()做的那樣,並且之後將Chrome徹底殺死。 – user6794561
在這種情況下測試運行後可能會殺死chrome驅動程序?無論如何不應該保持chrome驅動程序的實例運行。 – Moser