【发布时间】:2016-09-30 13:24:37
【问题描述】:
我想提取网站搜索栏自动完成提供的部分结果。我无法提取结果。我可以输入我想要的查询,但我无法存储自动建议。似乎每当我单击下拉建议以“检查元素”以查找要选择的内容时,下拉菜单就会消失!
这是我正在使用的代码:
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
import os
from scrapy.selector import HtmlXPathSelector
#launch chromedirver
driver.get("http://www.marinetraffic.com/en/ais/index/ports/all")
searchBox = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located(
(By.XPATH, '//input[@id= "portname"]')
)
)
searchBox.click()
searchBox.clear()
a = searchBox.send_keys('Belawan') #so far so good
selen_html = driver.find_element_by_class_name('input-group').get_attribute('innerHTML')
hxs = HtmlXPathSelector(text=selen_html)
suggests = hxs.select('//div[@class= "input-group"/Belawan/@title').extract
driver.close()
不出所料,错误是ValueError: XPath error: Invalid predicate in //div[@....[etc]。如何找到正确的名称以放入我的 XPath?
自动完成采用BELAWAN - Port [ID] 的形式,最终目标是退出ID。
编辑: screenshot
【问题讨论】:
-
您可以使用 webdriver 的 select 类和 select_by_index 或 select_by_value API 轻松完成您的任务。参考selenium-python.readthedocs.io/api.html
-
对,但我如何找到要选择的内容?
-
如果您可以添加要查找的元素的屏幕截图,那么也许我可以提供更好的帮助。现在写我去了你的网址并输入了belawan关键字,但之后我迷路了。
-
抱歉 - 没想到。
-
Saurabh baid 为你解答,干杯。
标签: python selenium selenium-chromedriver