问题描述
我想在搜索字段中输入['pack']
,然后按网站中的搜索按钮。 (重复)
此网站没有任何验证码,也没有转到其他页面来搜索结果。
每次在此循环中,我都希望提交字母或数字而不是这三颗星。
这意味着它将搜索46,656次。 Samsung *** Plus
并打印出产生((25+10).(25+10).(25+10))
的内容。
PS。有更简单的方法吗?
解决方法
通常最好提供更多信息(包括URL,您尝试过的特定代码等)。
首先只需设置您的网络驱动程序和页面
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('www.yoururl.com')
现在,我们将找到所需的元素。您可以使用任何方法,但我会使用名称。
search_box = driver.find_element_by_name('searchBoxName')
search_button = driver.find_element_by_name('searchButtonName')
现在,我们将在返回结果的同时循环搜索不同数量的搜索。这是循环的开始
for i in range(46656): #based on the number you gave
search_box.send_keys('Samsung {} Plus'.format(i))
search_button.click()
考虑到您并未提供太多信息,返回结果有些棘手。有两种主要的解决方法。
选项1:找到负责提供搜索结果的元素,并获取.text
属性。这是该示例的for循环。
for i in range(46656): #based on the number you gave
search_box.send_keys('Samsung {} Plus'.format(i))
search_button.click()
result = driver.find_element_by_name('result')
if result.text == 'Not Found!':
print("Samsung {} Plus: Not Found".format(i))
选项2:如果只有在没有结果的情况下才存在某个元素,则可以尝试定位该元素并使用它的存在来标记结果的不存在。如果只有在有结果的情况下存在特定元素,您也可以向后执行此操作。
for i in range(46656): #based on the number you gave
search_box.send_keys('Samsung {} Plus'.format(i))
search_button.click()
try: #look for the element that is present when there are no results
no_results = driver.find_element_by_name('noResults')
print("Samsung {} Plus: Not found!".format(i))
except NoSuchElementException: #if element is not found,there are results
pass
如果选择选项2,则需要在代码中添加以下行:
from selenium.common.exceptions import NoSuchElementException