下面的代码做了我需要它做的事情,除非它遇到一个缺少class_name的产品,比如说product-price。我需要帮助的是如何跳过那个特定的项目,转移到下一个项目。目前我得到以下错误:
import csv
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
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/dishwashers.html#!p=0&q=*%3Aprice-asc%3AcategoryPathHierarchy%3A2%2Fhd-classes%2Fl1-appliances%2Fl2-dishwashers')
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'
price = 'N/A'
title = 'N/A'
url = 'N/A'
items.append({'model': model, 'price': price, 'title': title, 'url': url})
print(model.text, price.text, title.text, url.get_attribute("href").text)
c = (model.text, price.text, title.text, url.get_attribute("href"))
a.writerow(c)
b.close()
Traceback(最近调用最后):文件“/users/user/pycharmprojects/test/homedepotdishwashers.py”,第31行,打印(model.text,price.text,title.text,url.get_attribute.text(“href”))AttributeError:'str'对象没有属性'text'
感谢任何帮助
有几种方法可以做到这一点。你试过吗?
1)用try包围行-除了https://docs.python.org/3/tutorial/errors.html
from selenium.common.exceptions import NoSuchElementException
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:
#here you can do what you want to do when an element is not found. Then it'll continue with the next one.
b.close()
2)使用if语句检查是否找到了该项。为此,您可以将所有这些元素列成一个列表(find_elements_by_...),并查看该列表的长度是否大于0。例如:
我试图自动登录到网站https://opensource-demo.orangehrmlive.com/web/index.php/auth/login使用硒通过它给出了一个错误 selenium.common.exceptions.NoSuchElementException: 消息: no suchElement: 无法找到元素: {“method”:“css selector”,“selec
我正在编写一个Python程序,该程序使用Selenium导航到高级搜索页面上的搜索框中并在搜索框中输入信息。本网站使用 Javascript,每次加载网站时,每个搜索框的 ID 和名称都会略有变化,但类名保持不变。类名经常被重用,所以我的目标是使用然后通过该列表编制索引。 例如,一个框的类名是 ,但我不能使用它,因为 selenium 认为它是一个复合类名并抛出一个错误。如果我只使用它的一部分,
问题内容: 我使用上面的python代码来练习一些基本的Selenium操作。我找不到任何元素,无论是名称还是ID。不管我尝试什么,我总是会遇到相同的错误,这表明我要查找的元素不存在。(想法是按一下其中一个按钮…) 这是网站html代码的一部分: 这是所说的网站(链接断开) 任何帮助将不胜感激。 顺便说一句,这是我尝试运行的第一个使用Selenium的程序,是否有可能需要更改某些设置或需要安装其他
问题内容: 我有一个工作脚本,可以使用selenium登录到站点,如下所示: script.py 通过以下方式在安装了Firefox的 亚马逊Ubuntu盒子 上运行该脚本: 我得到的错误是: selenium.common.exceptions.NoSuchElementException:消息:u’无法找到元素:{“ method”:“ id”,“ selector”:“ content”}’
我尝试使用Python selenium(新的)做一些自动化。不幸的是,检查特定网页的元素不仅仅是困难的。没有id可以使用,我尝试xpath。我想选择一个下拉列表,我检查这个元素,然后复制xpath,它是//*[@id="frmMain:purchase_criteria_tab"]/div[13]/div[1]/div/按钮 我的代码是: 我不明白这个元素有什么想法吗?提前谢谢你。
问题内容: 我有一个复杂的html结构,其中包含许多表和div ..而且结构可能会更改。如何通过跳过两者之间的元素来查找xpath。例如 : 我必须获取有关“名字”范围的输入元素 例如: 但是..我可以跳过htmls之间的内容并直接访问输入元素吗? 问题答案: 您可以尝试以下Xpath: 说明: 选择元素: 然后在上方元素旁边获取元素: 然后在上面第二步中选择的元素内获取元素: