Ich möchte einen Teil des Ergebnisses extrahieren, das durch die automatische Vervollständigung einer Suchleiste einer Website bereitgestellt wird. Ich habe Probleme, das Ergebnis zu extrahieren. Ich kann die Abfrage eingeben, die ich möchte, aber ich kann die Autosuggestion nicht speichern. Es scheint immer, wenn ich die Drop-Down-Vorschläge auf "Inspect Element" klicken, um zu finden, was das Dropdown-Menü auswählen verschwindet!Verwenden von Selenium zum Extrahieren von Daten, die von einer automatischen Vervollständigungssuche bereitgestellt werden
Hier ist der Code Ich arbeite mit:
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()
Der Fehler, wenig überraschend, ist ValueError: XPath error: Invalid predicate in //div[@....[etc]
. Wie finde ich den richtigen Namen für meinen XPath?
Die Autocomplete nimmt das Formular BELAWAN - Port [ID]
das Endziel ist, ID
herausziehen.
Edit: screenshot
können Sie WebDriver die Auswahl Klasse und select_by_index oder select_by_value APIs verwenden, um Ihre Aufgabe zu erfüllen easily.refer http://selenium-python.readthedocs.io/api.html –
Richtig, aber wie finde ich was wählen ? –
Wenn Sie einen Screenshot von dem Element, das Sie suchen, hinzufügen können, dann kann ich vielleicht besser helfen. schreibe jetzt ich ging zu deiner url und gab belawan keyword ein aber danach bin ich verloren. –