2017-12-27 29 views
0

Scopus 웹 사이트에서 의무적으로 수집 한 데이터를 "s"라는 목록에 저장했습니다. 그러나 모든 데이터는 s [1]에 저장되었습니다. 내 코드 :웹 요소가 목록의 한 요소에만있는 이유는 무엇입니까?

s=[] 
document=driver.find_elements_by_xpath("""//*[@id="srchResultsList"]/tbody""") 
for i in document: 
    s.append(i.text) 

어떻게해야합니까? 나는 Python 2.7에서 셀레늄 패키지를 사용했다.

+3

당신이 tr''을 반복 할 필요가 테이블 데이터를 얻을 필요가있는 경우 (행)와'td' (열)없이 imediate 결과를 수용하지 않는'tbody' –

+0

페이지에 대한 링크를 게시하고 정확히 무엇을 찾고 있는지 자세히 설명하십시오. 관련 HTML의 예, HTML에서 가져올 것으로 예상되는 것, HTML을 가져 오는 데 사용하는 코드를 제공하십시오. – JeffC

답변

1

나는 tbody 테이블 태그를 쿼리하려고합니다. 이유가 아닌가? 일반적으로 테이블에는 tbody 태그 만 있고 고유 한 요소가됩니다.

var에 모든 tr 요소 또는 모든 td 요소 또는 그 안에있는 다른 종류의 태그를 반환하고 저장하려고 시도했는지 여부는 알려주지 않았지만 반환하려는 항목이 무엇이든간에 선택기를 변경하십시오.

은의 당신의 XPath는 그것의 내부 IWebElements의 톤과 함께 TBODY 요소를 반환 가정 해 봅시다 : TR, TD, A, 스팬 ...하지만 당신의 선택 만 TBODY 요소에 대한 요구하고,하지 내부 요소, 알아 들었 니?

모든 tr 요소가 헤더 tr을 제외 시키려면 xpath를 //*[@id="srchResultsList"]/tbody/tr으로 변경하십시오.

원하는 모든 td 요소를 반환하는 다음 xpath //*[@id="srchResultsList"]/tbody//td을 사용할 수도 있습니다. 이 //*[@id="srchResultsList"]/tbody/tr | //*[@id="srchResultsList"]/tbody//td

또한 변경하거나 당신이 원하는 무엇을 모든 요소를 ​​반환 subqueryes을 만들 수 있지만 당신이 필요로 할 수 있습니다 : 당신이 TBODY 내부의 모든 TR 및 TD 요소를 원하는 경우

다른 경우

, 당신은 그런 식으로 조회 할 수 있습니다 선택에를 지정합니다 : 셀레늄 그냥 아이들

+0

완전한 대답을 가져 주셔서 감사합니다. 귀하의 응답이 좋습니다. 그러나 목록의 색인을 작성하는 데 실수가 있습니다. 나는 200 개의 roe 목록을 가지고 있어야하지만 목록에는 202 개의 행이있다. 이것에 대한 당신의 견해는 무엇입니까? –

+0

나는 당신이 원하는 것을 이해할 필요가있다 : 셀레늄 내부의 반환 값은 틀린가? 또는 지정된 양의 원소를 취하고 싶습니까? –

+0

어쨌든 크롬 콘솔 창을 사용하여 항상 xpath 및 cssSelectors를 모두 테스트 할 수 있습니다.'$ ("your-css-selector")'또는'$ x ("your-xpath")'를 사용해보십시오. 콘솔 기능이 아닌 js 또는 jquery이기 때문에 다른 브라우저가 xpath 선택기를 지원하는지 잘 모릅니다. 그러나 크롬은 분명히 지원한다. –