簡體   English   中英

如果與搜索值匹配,如何點擊搜索引擎結果

[英]How to click on a search engine result if it matches the searched value

我是 selenium 的新手。 我正在接受用戶輸入並基於此,我正在duckduckgo 中搜索它。 我想,如果輸入值與搜索結果 web 鏈接匹配,則代碼應點擊匹配的網站。 我的代碼執行成功,但沒有點擊網頁鏈接。 這是我的代碼:-

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException

stuff = input()
options = webdriver.ChromeOptions()
options.headless = True
options.add_argument("==lang=es")
browser = webdriver.Chrome()
browser.implicitly_wait(30)
browser.maximize_window()

browser.get('http://www.duckduckgo.com')
elem = browser.find_element_by_name('q')
elem.clear()

elem.send_keys(stuff)
elem.submit()

list = stuff.lower().replace(' ', '').split(',')
for a in browser.find_elements_by_id('links'):
    b = a.find_elements_by_tag_name('a')
    for link in b:
        url = link.get_attribute('href')
        if any(dom in url for dom in list):
            link.click()
        break

例如; 我輸入了這個輸入值 - Mitchell Centre, Darwin CBD, 0800我的代碼運行並打開了duckduckgo並在搜索欄中輸入了這個值,它應該點擊與我的輸入值匹配的網站(在藍色氣泡中),但是代碼在此之后停止。

在此處輸入圖像描述

我不明白問題是什么,如果你們能幫助我,那就太好了。

實際上我來自 Java 背景,但如果你可以將我的兩行 java 代碼轉換為 python 你將能夠實現它

你的代碼:

對於 b 中的鏈接:url = link.get_attribute('href') 如果有(url 中的 dom 列表中的 dom):link.click() 中斷

而不是link.get_attribute,轉換上面的代碼如下

在 Java 我們有.getText() 方法來獲取文本。

因此,嘗試使用 python 獲取您要查找的文本,如下所示(我使用了 Java)

link.getText() store this in a variable

For ex as in Java : String str = link.getText()

然后你的 if 條件來了

使用您的包含方法,如 python 下面的一個在 Java

if(str.contains("Mitchell Centre, Darwin CBD, 0800"))

link.click()
break

這段代碼對我來說很好用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM