2016-02-14 87 views
2

Python的硒複製表列我有了這些頭,像這樣的表:Table with Column Headings按列名

會如何使用XPath在一個數組來存儲我選擇整列。 我希望針對不同的陣列,如:

courses = [] 
teacher = [] 
avg = [] 

裸考慮到這些列中沒有任何的ID或類,所以我需要一種方法來通過使用列名只選擇。

下面是表的代碼:

<table border="0"> 
<tbody> 
<tr> 
<td nowrap="nowrap">Courses</td> 
<td nowrap="nowrap">Teacher</td> 
<td><select name="fldMarkingPeriod" onchange="switchMarkingPeriod(this.value);"> 
<option value="MP1">MP1</option> 
<option selected="selected" value="MP2">MP2</option> 
<option value="MP3">MP3</option> 
</select>Avg</td> 
</tr> 
<tr> 
<td nowrap="nowrap">[Course Name]</td> 
<td nowrap="nowrap">[Teacher Name]</td> 
<td> 
<table width="100%" cellspacing="0" cellpadding="0"> 
<tbody> 
<tr> 
<td title="View Course Summary" width="70%">100%</td> 
<td width="30%">A+</td> 
</tr> 
</tbody> 
</table> 
</td> 
</tr> 
<tr> 
<td nowrap="nowrap">[Course Name]</td> 
<td nowrap="nowrap">[Teacher Name]</td> 
<td> 
<table width="100%" cellspacing="0" cellpadding="0"> 
<tbody> 
<tr> 
<td title="View Course Summary" width="70%">100%</td> 
<td width="30%">A+</td> 
</tr> 
</tbody> 
</table> 
</td> 
</tr> 
<tr> 
<td nowrap="nowrap">[Course Name]</td> 
<td nowrap="nowrap">[Teacher Name]</td> 
<td> 
<table width="100%" cellspacing="0" cellpadding="0"> 
<tbody> 
<tr> 
<td title="View Course Summary" width="70%">100%</td> 
<td width="30%">A+</td> 
</tr> 
</tbody> 
</table> 
</td> 
</tr> 
</tbody> 
</table> 

任何想法?謝謝。

+0

不可能提供一個很好的答案,而無需對錶的HTML代碼。 – alecxe

+0

@alecxe在這裏你去,但我確實刪除了一些個人和額外的信息,也清理了一下。希望這會幫助 –

回答

0

不知道到底爲什麼你需要列中的數據,但這裏是一個簡單的實現:

courses = [] 
teachers = [] 
avgs = [] 

for row in table.find_elements_by_css("table > tbody > tr")[1:]: 
    course, teacher, _, avg = [td.text for td in row.find_elements_by_xpath(".//td")] 

    courses.append(course) 
    teachers.append(teacher) 
    avgs.append(avg) 
+0

給出一個錯誤:ValueError:需要多個值才能解包。它是代碼嗎? –

+0

@HarshulSahni好的,更新,請立即嘗試。 – alecxe

+0

我也將文字中的第四行改爲'driver.find_elements_by_css_selector',但它仍然給了我相同的錯誤... –