2016-01-05 43 views
1

我使用硒的webdriver与Python,我需要这在一个循环: 我可以做这样的事情:如何制作元素硒的列表?

a=browser.find_element_by_xpath("//tbody[@id='mrc_main_table']/tr/td[1]") 
b=browser.find_element_by_xpath("//tbody[@id='mrc_main_table']/tr/td[2]") 
c=browser.find_element_by_xpath("//tbody[@id='mrc_main_table']/tr/td[3]") 
d=browser.find_element_by_xpath("//tbody[@id='mrc_main_table']/tr/td[n]") 

1),但我想是这样的:

var==browser.find_element_by_xpath("//tbody[@id='mrc_main_table']/tr/td[ALL_value]") 

2)I需要作为阵列输出这样的:

output=[ANDERSON,ISAIAH,DWIGHT,....] 

下面是该代码:

import xlwt 
    from tempfile import TemporaryFile 
    from selenium import webdriver 
    browser =webdriver.Firefox() 
    browser.get("https://report.boonecountymo.org/mrcjava/servlet/SH01_MP.I00290s") 
    element=browser.find_element_by_xpath("//tbody[@id='mrc_main_table']/tr/td[1]")#I want this as list 
    output=element.text #I want this as list 
    print output 

    book = xlwt.Workbook() 
    sheet1 = book.add_sheet('sheet1') 
    output=[ANDERSON,ISAIAH,DWIGHT,....] 
    output= [a,b,c] 
    for row, array in enumerate(output): 
      for col, value in enumerate(array): 
      sheet1.write(row, col, value) 
    name = "this.xls" 
    book.save(name) 
    book.save(TemporaryFile()) 

任何人都可以帮我吗? 感谢

回答

0

使用find_elements_by_xpath()list comprehension,并且不指定单元格指数:

[td.text for td in browser.find_elements_by_xpath("//tbody[@id='mrc_main_table']/tr/td")] 

如果你想拥有每行单元格值的名单,你就需要制作列表名单:

[[td.text for td in row.find_elements_by_tag_name("td")] 
for row in browser.find_elements_by_xpath("//tbody[@id='mrc_main_table']/tr")] 

演示:

>>> from selenium import webdriver 
>>> from pprint import pprint 
>>> 
>>> browser = webdriver.Firefox() 
>>> browser.get("https://report.boonecountymo.org/mrcjava/servlet/SH01_MP.I00290s") 
>>> data = [[td.text for td in row.find_elements_by_tag_name("td")] for row in browser.find_elements_by_xpath("//tbody[@id='mrc_main_table']/tr")] 
>>> pprint(data) 
[['ACTON', 'CLINTON', 'WAYNE', 'M', 'W', '35', 'STURGEON', 'MO'], 
['ALLEN', 'SHAUN', 'PHILLIP', 'M', 'W', '28', 'COLUMBIA', 'MO'], 
['ANDERSON', 'ISAIAH', 'DWIGHT', 'M', 'B', '19', 'COLUMBIA', 'MO'], 
... 
['DONATI', 'ROBERT', 'KEITH', 'M', 'W', '52', 'COLUMBIA', 'MO'], 
['DONIGIAN', 'CHARLES', 'ROSS', 'M', 'W', '20', 'COLUMBIA', 'MO']] 
+0

干得好...非常感谢你 –

相关问题