首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次运行selenium脚本时提取不同的数据

每次运行selenium脚本时提取不同的数据
EN

Stack Overflow用户
提问于 2017-08-20 01:21:01
回答 1查看 33关注 0票数 0

我一直在以下URL上运行python selenium脚本:

http://www.amazon.in/s/ref=sr_pg_1?sort=salesrank&ie=UTF8&rh=n%3A1571277031&page=1&unfiltered=1

我想知道每种产品是不是都很畅销。运行相同的脚本,有时我会得到正确的结果,而有时我会得到错误的结果。

下面是我一直在编写的代码:

代码语言:javascript
复制
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 ):

代码语言:javascript
复制
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 ):

代码语言:javascript
复制
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

为什么会发生这种情况?这个问题有什么可能的解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-20 02:43:09

如果您想要列出产品,您应该使用带有id或类引用的选择器(检查源代码以分析这一点,并在可以的情况下提取类名或id,大多数浏览器都允许右键单击一个元素来启动检查):

代码语言:javascript
复制
for i in range(17):
    product = driver.find_element_by_id('result_{}'.format(i))
    try:
        print product.find_element_by_xpath("//span[@class='sx-badge-text']").text.encode('utf-8')
    except:
        print 'not a best seller'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45774364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档