2017-03-17 12 views
1

Python 3.6 및 Selenium을 사용하여 데이터 양식을 가져 오는 중입니다. 내가 잡으려고하는 테이블 중 하나에는 여러 행이 있습니다. 그래서 각 열에서 9 열을 얻고 싶습니다.Selenium과 Python을 사용하여 열 데이터를 순환하는 행을 반복하십시오.

나는이 사이트에서 검색 한 결과 거의 적응할 수있는 코드를 발견했습니다.

table_id = driver.find_element(By.ID, 'ctl00_mid_rptItems_ctl00_gvItems') 
rows = table_id.find_elements(By.TAG_NAME, "tr") 
for row in rows: 
    cols = row.find_elements(By.TAG_NAME, "td") 
    for col in cols: 
     print (cols[8].text) 

내가 할 열에서 올바른 데이터를 뱉어하지만 제가하는 데 문제는이 테이블의 열 수 인, 각 행을 통해 16 번 루프이다, 각각의 데이터를 인쇄 포인트 16 번.

내가 위의 단지 "(COL)에 대한"루프

table_id = driver.find_element(By.ID, 'ctl00_mid_rptItems_ctl00_gvItems') 
rows = table_id.find_elements(By.TAG_NAME, "tr") 
for row in rows: 
    cols = row.find_elements(By.TAG_NAME, "td") 
    print (cols[8].text) 

하지만를 제거하여 각 열 1 시간을 뱉어하는 코드를 적응하기 위해 노력, 이것은 오류 "역 추적 (가장 최근 통화 마지막)를 제공합니다 : 파일 :
인쇄에서 "C \ 사용자 \ 문서 PleaseTest_R1.py을 \", 91, (COLS [8]는 .text) IndexError : 범위를 벗어난리스트 인덱스

내가이 얻을 수있는 방법에 대한 아이디어 루프가 작동합니까?
도움에 대해 너무 고마워! :-)

+0

에 의해 행 개수를 얻을 수 있습니다 이 문제는'b.table.rows.each'와 같은 멋진 구문을 제공하기 때문에 발생합니다. 문제 해결 방법은 Chrome 또는 Mozilla에서 작업하는 경우 JavaScript 사용입니다. IE에서 작업하는 경우 JavaScript가 해결책이 아닙니다. – RAJ

+0

제안 해 주셔서 감사합니다. 가능한 경우 파이썬에서 모든 것을 할 수 있기를 바랍니다. –

답변

0

자바 스크립트 사용을 제안 할 수 있습니다.이 자바 스크립트를 Python 프로그램을 통해 실행하면 작동합니다.

Systax는

document.getElementId("tableid").rows[3].cells[4].innerHTML 

, 셀 컨텐츠를 취할 그리고 당신은 당신이 Watir과 (루비에 의해 만들어진 셀레늄 래퍼)를 사용하는 경우, 당신이없는

document.getElementId("tableid").rows.length