我已经在下面的网址上运行一个python硒脚本时: -每次提取不同的数据运行的硒脚本
http://www.amazon.in/s/ref=sr_pg_1?sort=salesrank&ie=UTF8&rh=n%3A1571277031&page=1&unfiltered=1
,我想知道的每一个产品是否畅销书或不。运行相同的脚本有时会得到正确的结果,而有时会得到不正确的结果。
这里是我一直在努力代码:
import sys
import csv
import os
import time
import urllib
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
count = 1;
serviceurl = 'http://www.amazon.in/s/ref=sr_pg_1?'
for j in range(1,4):
page = j;
url = serviceurl + urllib.urlencode({ 'rh':'n:1571277031','page':page,'sort': 'salesrank' , 'unfiltered':'1', 'ie':'UTF8' });
driver = webdriver.Chrome();
driver.maximize_window() #For maximizing window
driver.get(url);
driver.implicitly_wait(3) #gives an implicit wait for 10 seconds
while driver.execute_script("return document.readyState") != 'complete':
pass;
for i in range(1,17):
temp = 0;
print count;
count+=1;
try:
print driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[3]/div[2]/div/div[4]/div[1]/div/ul/li[%s]/div/div/div/div[2]/div[1]/div/div/a/span[1]/span/span"%(i)).text.encode('utf-8')
except Exception as e:
print "Not a best seller";
# print e;
下面是它的输出我得到当我运行相同的脚本(正确ANS): -
1
Best seller
2
Best seller
3
Not a best seller
4
Not a best seller
5
Best seller
6
Not a best seller
而我还可以得到下面的输出(错误ANS): -
1
Not a best seller
2
Not a best seller
3
Not a best seller
4
Not a best seller
5
Not a best seller
6
Not a best seller
任何理由为什么发生这种情况?以及解决这个问题的可能方法
你应该取消注释'print e'它会告诉你什么失败。顺便说一句,你不需要所有';' – PRMoureu
@PRMoureu它显示以下错误: - selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素.......... 但是元素在那里,可以说我再次运行脚本,它不会显示错误并获取正确的答案。就像它的脚本一样,它有时可以定位元素,有时不能。 任何帮助? P.S. :- 谢谢你的 ;部分。我已经知道,但因为我主要是用c/C++编写代码,所以有习惯把它放在 –
这是我在生活中见过的最糟糕的xpath“print driver.find_element_by_xpath(”/ html/body/div [1]/DIV [2]/DIV/DIV [3]/DIV [2]/DIV/DIV [4]/DIV [1]/DIV/UL /利[%S]/DIV/DIV/DIV/DIV [2]/div [1]/div/div/a/span [1]/span/span“%(i))。text.encode('utf-8')”这样会容易出错。不要自动生成XPATH并学会创建可靠的XPATHs –