使用Selenium和Python进行重复搜索给我一个他们没有结果的人

问题描述

我想在搜索字段中输入['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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...