2016-06-29 4 views
-1

안녕하세요 다음과 같은 코드가 있습니다 :카운트 번호 (파이썬, 셀레늄)

for each in driver.find_elements_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody") 
    cell = each.find_elements_by_tag_name('td')[0] 
    cell2 = each.find_elements_by_tag_name('td')[1] 
    cell3 = each.find_elements_by_tag_name('td')[2] 

내 문제는 내가의 td 모든 each (때로는 3 내부가 정확히 얼마나 많은 모르겠입니다 , 때때로 15 etc. etc ...).

동적으로 만들기 위해 안에 td의 번호를 확인할 수 있습니까? find_elements_by_tag_name('td')?

답변

0

그냥 인덱스를 사용하여 그들을 얻을하지 않습니다

print(len(cells)) 

또는 슬라이스 :

cells = each.find_elements_by_tag_name('td') 

다음 cells는 당신이 len()를 호출 할 수 있습니다 요소 목록이 될 것

cells[:3] # gives first 3 elements 
cell1, cell2, cell3 = cells[:3] # unpacking into separate variables 

또는 모든 셀의 텍스트 :

[cell.text for cell in cells] 
+0

감사를 찾습니다! :) 내 문제는 내가 제대로 내 SQL 데이터베이스에 데이터를 삽입하려면 인덱스가 필요합니다, 그렇지 않으면 그들을 삽입하는 방법을 모르겠다 ... 미안하지만 나는 파이썬과 SQL에서 새로운 ...하지만 만약 당신은 더 좋은 해결책을 가지고 있습니다. 나는 그것을 듣기에 행복합니까? : D – Lord

+0

@Lord 미안하지만, 당신이 무엇을하려고하는지 명확하지 않습니다. 지금까지 가지고있는 코드를 추가하고 최종 목표에 대한 세부 정보를 추가 할 수 있습니까? 감사. – alecxe

0

find_elements_by_tag_name 목록을 반환합니다. 해당 목록에서 len()을 사용하여 해당 태그 이름별로 요소 수를 얻으십시오. 또한 for each이라고 말하기보다는 설명적인 과제를 사용하는 것이 좋습니다. 이것은 당신이 무엇을하려고처럼 귀하의 의견을 읽기에서

table = driver.find_element_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody") 
table_rows = table.find_elements_by_tag_name("tr") 
for row in table_rows: 
    row_cells = row.find_elements_by_tag_name("td") 
    num_of_cells = len(row_cells) 
0

, 그것은 ... 당신의 답변을

for each in driver.find_elements_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody") 
    for i in range(0,len(each.find_elements_by_tag_name('td')) 
     // you can now use i as an index into the loop through the TDs 
     print "do something interesting with i: " + i