【问题标题】:Cannot locate search bar with selenium in python无法在python中找到带有硒的搜索栏
【发布时间】:2020-08-03 15:16:33
【问题描述】:

我一直试图在这个网站上找到一个侧边栏https://covid19.who.int/?gclid=EAIaIQobChMIkoua643_6gIVDNd3Ch3qgApPEAAYASAAEgIfIvD_BwE

我要查找的搜索栏位于顶部,上面写着“按国家、地区或地区搜索” 我尝试使用 XPATH,但在定位元素时总是出错,或者有时它说我的元素不可交互(我猜这意味着我正在定位不同的元素) 能否请教一下找到该元素的方法?

here is what I saw when I inspected

【问题讨论】:

  • 你正在搜索搜索栏和侧边栏,或者只搜索搜索栏,找到搜索栏后你想做什么,我的意思是你的最终目标是什么?

标签: python selenium web-scraping selenium-chromedriver


【解决方案1】:

假设您要搜索 Country 并查看数据,因此您需要找到搜索框的 id(即 react-select-2-input)并使用 send_keys 输入 Country 名称并按 Enter。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


site = 'https://covid19.who.int/?gclid=EAIaIQobChMIkoua643_6gIVDNd3Ch3qgApPEAAYASAAEgIfIvD_BwE'

driver = webdriver.Chrome(executable_path = 'chromedriver.exe') # Here I am using Chrome's web driver
#For Firefox Web driver
#driver = webdriver.Firefox(executable_path = 'geckodriver.exe') 
driver.get(site)
time.sleep(3)
elem = driver.find_element_by_id("react-select-2-input")
elem.send_keys("Brazil")
elem.send_keys(Keys.ENTER)

如果您只对查找搜索栏感兴趣,那么您可以通过它的 id(driver.find_element_by_id("react-select-2-input")) 找到它

我是如何找到搜索栏 ID 的?

基本上搜索栏只是一个文本框,在 HTML 文本框代码以 <input type="text"> 开头,所以我只需要在浏览器的检查元素中找到文本框的 HTML 代码。

通过查看您的屏幕截图,我可以说您的方向是正确的,只是您必须进一步扩展 div 标记,直到找到文本框的代码。

【讨论】:

  • 非常感谢,我对这个领域很陌生,即使我知道如何编码和做这些东西,我也很难找到元素......我想我应该开始学习 HTML严重地。请问你是怎么找到那个id的?我在栏上按了检查,但我找不到......我想这是一个愚蠢的问题,但我错过了一些东西。谢谢
  • @L'首先,如果你正在学习一些东西,那么毫无疑问是愚蠢的,现在我是如何找到它的,你正在搜索search-bar,即除了一个文本框和 HTML 文本框之外什么都没有以input type text 开头,所以我复制了那个文本框的 id。
  • @L'inventore 我在回答中添加了我是如何找到搜索栏 ID 的。
猜你喜欢
  • 2018-11-22
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
相关资源
最近更新 更多