当前位置: 首页 > 面试题库 >

如何通过Selenium和Python从Google搜索结果中单击随机链接

宋洲
2023-03-14
问题内容

当前使用Selenium + Python和以下代码:

browser.get('http://www.google.com')
search = browser.find_element_by_name('q')
search.send_keys("how to search the internet")
search.send_keys(Keys.RETURN) # hit return after you enter search text
time.sleep(5) # sleep for 5 seconds so you can see the results
browser.execute_script("window.scrollTo(0, 873)") 
time.sleep(2)
browser.find_element(By.XPATH, '(//h3)[3]/a').click()`

作为我的代码。

发生什么:转到Google并输入单词并点击搜索。向下滚动一点,然后单击第一个链接

我想要的是:我希望能够从搜索结果页面中单击随机链接

这该怎么做?

编辑:这就是我说不必要的意思:不必要的1:https
://imgur.com/a/70qz89x

不必要的2:https :
//imgur.com/a/8WWvcnC

这些是我想要的唯一结果:这:https :
//imgur.com/a/eTatFV9


问题答案:

根据您的问题,click()从Google搜索结果中随机链接到您,按照您的 代码试用, 如果您调用window.scrollTo(0, 873),然后按以下方式调用click()

find_element(By.XPATH, '(//h3)[3]/a').click()`

Selenium 仍将尝试尝试click()第一个匹配,这可能不是您想要的用

序,以click()从谷歌搜索结果中的随机链接,你可以创建一个 列表 出来的 搜索结果 ,然后生成一个 随机数
,并调用click()通过 指标 如下:

  • 代码块:
        from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.keys import Keys 
    from random import randint

    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    browser=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    browser.get('http://www.google.com')
    search = browser.find_element_by_name('q')
    search.send_keys("selenium")
    search.send_keys(Keys.RETURN)
    my_search_list = WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//h3[@class='r']/a[not(ancestor::div[@class='xIleA'])]")))
    myRandomNumber = randint(0, len(my_search_list))
    print(myRandomNumber)
    my_search_list[myRandomNumber].click()
  • 控制台输出:
    4
    


 类似资料:
  • 问题内容: 我正在搜索文字“奶酪!” 在Google主页上,并不确定在按搜索按钮后如何才能单击搜索到的链接。例如,我想单击搜索页面顶部的第三个链接,然后如何找到标识的链接并单击它。到目前为止,我的代码: 问题答案: Google缩小了CSS类等,因此识别所有内容并不容易。 另外,您还有一个问题,必须“等待”,直到站点显示结果为止。我会这样做: 这将为您打印: http://de.wikipedia

  • 如何在SeleniumWebDriver中单击搜索文本框结果的特定文本。在我的例子中,搜索文本框是“学校”。 我正在发送文本框“School”中的键“RGSchool1”,然后我想在文本框下显示为结果时单击“RGScool”。 我尝试了以下所有接近它的投掷"org.openqa.selenium.NoSuchElementExc0019" 输入文本和标签输出 输入文本并发送回车键 绝对路径- /h

  • 我想单击表ID“ContractDesc”、“EEE”内容中的单元格: HTML页面: 我的代码不起作用: 和 错误是: 硒。常见的例外情况。NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:”//*[@id=“1”]/td[2]”

  • 我试图使用selenium webdriver从给定搜索结果URL的IEEE Xplore搜索中提取搜索结果计数。我没有从下面的代码中得到任何错误,但我不确定如何从这里开始。

  • Iam测试了以下网页:http://www.guiadosliflrinhos.com/todas-capas-disponiveis 我需要在分页信息页导航喜爱。我需要点击链接javascript下一页: JavaScript:__doPostback('CTL00$MainContent$LSTProfileview$DataPagerNumeric2$CTL02$CTL00') 我的代码返回

  • 问题内容: 我有以下代码,用于使用JSoup在Java中解析HTML。 问题是我只能检索首页搜索结果链接。我应该怎么做才能从Google搜索结果的其余页面获得链接。 问题答案: 如果要从第二页获得结果,请添加到URL。对于第三页使用,依此类推。