2013-05-12 75 views
0

在Firebug,当我在控制台下面的CSS选择器运行时,我得到一些像这样的输出节点......最后,我可以提取这些节点信息...等效命令

$$("div.skuCol>div.priceBox>div.bFont") 

结果:

[div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, 
div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, 
div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, 
div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, div.bFont, 
div.bFont, div.bFont, div.bFont] 

我怎样才能运行的webdriver上面的命令......当前我这样做像这条巨蟒....

from lxml.cssselect import CSSSelector 
    from lxml import etree 
    import requests 
    from StringIO import StringIO 

    #Sorting by low to high 
    r = requests.get("http://%s.somewebsite.com/ps/?q=mango&o=pricelth&p=1") 
    parser = etree.HTMLParser() 
    tree = etree.parse(StringIO(r.content), parser) 
    #Note this line... 
    sel = CSSSelector("div.skuCol:not([style^='display']) > div.priceBox > div.bFont") 
    nodes = sel(tree.getroot()) 
    s_list = [] 
    for node in nodes: 
     s_list.append(float(node.text.split(" ")[-1])) 

    print s_list 

回答

3
from selenium import webdriver 

driver = webdriver.Firefox() 
elements = driver.find_elements_by_css_selector("div.skuCol>div.priceBox>div.bFont) 
#iterate the array and do something with the elements after this 
+1

更准确地说,'find_elements_by_css_selector(...)',因为他想把它们全部取出,而不仅仅是第一个。但否则,+1。 – 2013-05-12 15:20:42

+0

啊,是的,好点。我会编辑答案。 – rcdsystems 2013-05-12 15:31:06