2016-11-13 133 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

添加一个真正的任务 –

相关问题