2016-04-05 24 views
0

İki açılan menüler arasında dolaşan bir web kazıyıcı yapmaya çalışıyorum, ancak selenium kullanarak ilk aşağı açılan kutuyu bulmuyorum. Tüm isimleri ve yılları aşağıya açılan kutuda dolaşarak tüm sayfaların ve değerlerin bir tablosunu bir csv'ye aktardım. web sayfasıdır: http://surge.srcc.lsu.edu/s1.htmlWeb Sellishum'u iki açılır menülerle kazıma

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

driver = webdriver.Firefox() 
driver.get("http://surge.srcc.lsu.edu/s1.html") 

element = driver.find_element_by_xpath('//select[@id="storm_name"]') 
all_options = element.find_elements_by_tag_name("option") 

Benim hatadır: Ben cevap olarak bu yayınlayacağız

NoSuchElementException: Unable to locate element: 
{"method":"xpath","selector":"//select[@id=\"storm_name\"]"} 
+0

Bunun nedeni, öğenizi bulmak için doğru web sayfasını yüklemiyorsunuz. [Web sayfanız] (http://surge.srcc.lsu.edu/s1.html), [gerçek içerik] 'e işaret eden bir iFrame içerir (http://surge.srcc.lsu.edu/surge_map.html) Selenium inanıyorum iFrames ön yükleme mümkün değildir. Bu sayfayı alın ve kodunuz çalışmalıdır. –

+0

@Krazor bunu bir cevap olarak göndermelisiniz – DaveBensonPhillips

+0

Bir tane olup olmadığından emin değildim. Şimdi yapacak. –

cevap

0

Yani çünkü @HumphreyTriscuit arasında. Lütfen bir cevap olarak işaretlemek için zaman ayırın.

Yani oraya gidin:

Onun size elemanı bulmak için doğru web sayfasını yüklerken olmadığı için. Your webpage, actual content'a işaret eden bir iFrame içerir, ancak Selenium, iFrames'i ön yükleyemediğime inanıyorum. Bu sayfayı alın ve kodunuz çalışmalıdır.

Ayrıca burada küçük bir bonus: Eğer xPath'inizden emin değilseniz, xPath Checker for Firefox'u kullanmayı düşünmelisiniz.

+0

Yup, Sadece bunun üzerinde çalışıyordum ve bunu buldum, yeni kodumu yeniden yayınladım, hatam şimdi onu çalıştırıyorum, açılan kutudaki son elemanı seçiyor. Sleep() b/c ekledim, örtülü bekleme çalışmadı. – Corncobpipe

+0

'ImplicitWait' Selenium'da bir acıdır ve çok kötü bir belgelere sahiptir. Her zaman 'WebDriverWait' ile 'ExplicitWait' kullanmalısınız, ancak bu da zor olabilir ve çoğu zaman okumak gerçekten çirkin. Uyku kullanımı genel olarak kötü bir uygulamadır ama kabul edilebilir bir çözüm olduğunu düşünüyorum. –

İlgili konular