簡體   English   中英

從下拉列表中抓取值列表

[英]scraping list of values from drop-down

我試圖從網站https://www.goodjobsfirst.org/violation-tracker的下拉列表中抓取公司列表,下拉列表是母公司。

我正在運行以下代碼

from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser =  webdriver.Chrome(executable_path=r"C:\webdrivers\chromedriver.exe")
url = ('https://www.goodjobsfirst.org/violation-tracker')
browser.get(url)
browser.maximize_window()  
element = WebDriverWait(browser, 20).until(Select(browser.find_element_by_id("edit-field-violation-parent-value")))

browser.quit()

但是我得到了錯誤

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="edit-field-violation-parent-value"]"}
  (Session info: chrome=83.0.4103.61)

我檢查了不同的時間和 edit-field-violation.. 確實是 ID。 我還嘗試使用 Xpath 和其他選擇器來獲取它,但沒有成功。 我錯了什么? 如何獲得下拉列表中所有公司的列表?

謝謝!

此元素位於<iframe>和 Selenium 中,就像分離的內容/頁面一樣,您必須使用browser.switch_to.frame(...)來訪問它。

from selenium import webdriver

browser = webdriver.Chrome(executable_path=r"C:\webdrivers\chromedriver.exe")
#browser = webdriver.Firefox()

url = ('https://www.goodjobsfirst.org/violation-tracker')
browser.get(url)
browser.maximize_window()

frame = browser.find_element_by_tag_name("iframe")
print('frame:', frame)

browser.switch_to.frame(frame)

element = browser.find_element_by_id("edit-field-violation-parent-value")
print('element:', element)

select = Select(select)
print('options number:', len(select.options))

for number, item in enumerate(select.options, 1):
    print(number, item.text)

# go back to main content
#browser.switch_to.default_content()

browser.quit()

暫無
暫無

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

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