这篇文章关于两篇错误:
报错:
一:
<selenium.webdriver.remote.webelement.WebElement (session="8dcdc8b4-6797-4198-9658-bbe7fbe3da81", element="fc78d524-a908-4c1a-9b85-923668b141c5")>
二:
'WebElement' object is not subscriptable
下面按顺序讲。
爬虫定位元素之后,想把结果打印出来看看对不对,在print的时候出现了这样的报错:
<selenium.webdriver.remote.webelement.WebElement (session="8dcdc8b4-6797-4198-9658-bbe7fbe3da81", element="fc78d524-a908-4c1a-9b85-923668b141c5")>
在一番查询之后发现其实并不是报错,只是定位到的是一个列表的形式,打印的时候需要确定到列表的某个值才能打印出想要的结果
于是将:
print(name)
改为:
print(name[0].text)
到这里还是没有成功打印,报错如下:
'WebElement' object is not subscriptable
这里是因为element代表查找单个元素而elements才能查找出列表(注意方法名中element和elements的区别,前者找单个元素,后者能找个列表元素,即多个元素并组成list列表返回输出)
于是乎将代码中的:
name = driver.find_element(By.XPATH,'//div[@class="p-name p-name-type-2"]/a/em')
改为
name = driver.find_elements(By.XPATH,'//div[@class="p-name p-name-type-2"]/a/em')
成功打印结果:
https://item.jd.com/100017586667.html
YATOTO儿童书包小学生1-3-6年级减负护脊轻便背包环保抗菌高颜值男女双肩包大容量生日礼物 梦幻美人鱼
828.00
Yatoto京东自营旗舰店