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

通过selenium python迭代网页以获取搜索结果的位置,python,html,selenium,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_

我正在搜索一个通用关键字,并在电子商务网站上查找我的产品排名。下面是我的代码,它可以成功地工作

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
我发现很难精确放置循环。请帮我解释一下语法。我是个新手

请尝试以下代码:

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

这将允许您使用正确的缩进将第二部分集成到第一部分中

请尝试下面的代码。希望能有所帮助-

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

我相信你的代码块缩进是错误的。看见如果希望for命令的每次迭代都执行If语句,则需要缩进它。如果需要在If块中执行print语句,则需要向其添加额外的缩进。我做了。。但我不明白确切的方法。。你能帮我解释一下语法吗?我们可以试试另一个例子:我试过这么做,但它给了位置I错误的值。它给出了以下错误的值。。。。3 4 5 6 22 21 20 23 0 4 6 9 13 18 1 3 6 7 8 9 12 12 12 9 10 18 21 22 5 6 10 3你为什么认为他们错了?这似乎是正确的值。这些是搜索结果的搜索位置号。在第一页排名应该是4,5,6,7。每一页有25条记录,因此,如果在第二页(比如第二个位置)出现单词“Epson”,则输出应该是27条。希望你明白我的意思。不。很抱歉,这仍然给出了错误的搜索结果,你确定吗?我得到了以下结果:3,4,5,6,97,146,695,698,700,704,706,709,713。。。