2016-11-13 59 views
1

你好,感謝你的時間。如何在Selenium中執行JavaScript並獲取數據?

我的目的是製作解析器,它遵循數百個網站,並檢查網站是否有模塊(特殊插件)或不。主要的問題,唯一的辦法是確保它是一個適合網站的午餐JavaScript。

enter image description here

所以,我不知道怎麼吃午飯的JavaScript和虎視眈眈數據

例如:

driver = webdriver.Chrome('D:\chromedriver_win32\chromedriver')  
driver.get("https://lieman.com/") 
tag = driver.execute_script("document.getElementsByClassName('arsenal_title')") 
driver.close() 
print(tag) 

標籤打印無。

有人可以幫助我來接收數據,或者告訴我其他的方法來檢查javascipt的

===

def main(): 
    driver = webdriver.Chrome('D:\chromedriver_win32\chromedriver') 
    driver.get("http://redhelper.ru/") 
    morn = driver.execute_script("return redhlpSettings()") 
    driver.close() 
    print(morn) 

if __name__ == '__main__': 
    main() 

回答

1

你不需要執行JavaScript,使用find_elements_by_class_name(class_name)find_element_by_class_name(class_name)代替:

tags = driver.find_elements_by_class_name('arsenal_title') 

OR

tag = driver.find_element_by_class_name('arsenal_title') 

如果您需要使用execute_script其他原因,並希望得到該表達式的值,則需要回報在JavaScript方面:

tags = driver.execute_script("return document.getElementsByClassName('arsenal_title')") 

UPDATE

替換以下行:

morn = driver.execute_script("return redhlpSettings()") 

有:

morn = driver.execute_script("return redhlpSettings") 

因爲redhlpSettings不是一個函數。你會看到一個JavaScript對象被轉換爲Python中的字典對象。

+0

謝謝你的例子。但它就像一個例子。 真正的任務: 數據= driver.execute_script( 「返回redhlpSettings()」) 和我得到的錯誤: selenium.common.exceptions.WebDriverException:消息:未知的錯誤:redhlpSettings沒有定義。 但是,當你看到上面的控制檯,它有這樣的方法。 –

+0

@SergeyBakotin,然後,請提供重現您問題的代碼。 – falsetru

+0

添加一個真正的任務 –

相關問題