通过selenium python迭代网页以获取搜索结果的位置

时间:2017-07-06 14:58:48

标签: python html selenium

我正在搜索通用关键字并在电子商务网站上查找我的产品排名。这是我成功运作的代码。

from selenium import webdriver
driver = webdriver.Chrome( "C:\All\chromedriver_win32\chromedriver.exe" )
driver.get('https://web.com/searchall?b=1&kw=printer')
items = driver.find_elements_by_class_name('productResult')
for i, item in enumerate( items ):
if 'EPSON' in item.text:
print( i )

这只取得第一页的排名,但现在我想转到每个页面并获取我的产品的排名。我知道我必须使用一个类似这样的循环:

while True: 
try: driver.find_element_by_xpath('//div[@class="pageNavigation nextPage"]/a').click() 
except: 
break

我发现循环的确切位置有困难。请帮我解释一下语法。我是新手。

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

from selenium import webdriver
driver = webdriver.Chrome( "C:\All\chromedriver_win32\chromedriver.exe" )
driver.get('https://shop.techdata.com/searchall?b=1&kw=printer')

items_count = 0

while True: 
    items = driver.find_elements_by_class_name('productResult')
    for i, item in enumerate( items ):
        if 'EPSON' in item.text:
            print(items_count + i)
    items_count += len(items)
    try: 
        driver.find_element_by_xpath('//div[@class="pageNavigation nextPage"]/a').click()
    except:
        break

这应该允许您将第二部分与正确缩进的第一部分集成

答案 1 :(得分:0)

尝试以下代码。希望它会有所帮助 -

from selenium import webdriver
driver = webdriver.Chrome( "C:\All\chromedriver_win32\chromedriver.exe" )
driver.get('https://shop.techdata.com/searchall?b=1&kw=printer')

items_count = 1

while True: 
    items = driver.find_elements_by_class_name('productResult')
    for i, item in enumerate( items ):
        if 'EPSON' in item.text:
            print(items_count + i)
    items_count += 25
    try: 
        driver.find_element_by_xpath('//div[@class="pageNavigation nextPage"]/a').click()
    except:
        break