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

2024-06-15 07:08:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在搜索一个通用关键字,并在一个电子商务网站上找到我的产品排名。这是我的代码,成功的工作。你知道吗

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

我发现很难准确地放置循环。请帮我学语法。我是个新手。你知道吗


Tags: 代码infromby产品网站driveritems
2条回答

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

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

请尝试以下代码:

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

这样你就可以用正确的缩进将第二部分整合到第一部分中

相关问题 更多 >