我正在搜索通用关键字并在电子商务网站上查找我的产品排名。这是我成功运作的代码。
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
我发现循环的确切位置有困难。请帮我解释一下语法。我是新手。
答案 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