2016-12-30 1 views
0

필자는 pyquery를 많이 사용하지 않는다는 말로 시작해야한다. 그래서이 질문은 쉽게 할 수 있지만, 나는 여러 가지 시도를하고 붙어있다.PyQuery를 사용하여 테이블에서 텍스트를 얻으려면 어떻게해야합니까?

저는 테이블에서 정보를 얻기 위해 PyQuery를 사용하고 있습니다. 여기 내 테이블의 시작입니다 :

<table class="sortable" border="1" cellspacing="1" cellpadding="1" bordercolor="#333333"> 
    <thead> 
     <tr class="headerfont"> 
      <td><div align="center">Year</div></td> 
      <td><div align="center">Name</div></td> 
      <td><div align="center">College</div></td> 
      <td><div align="center">POS</div></td> 
      <td align="center"><div align="center">Height <span style="font-size:10px;">(in)</span></div></td> 
      <td align="center"><div align="center">Weight <span style="font-size:10px;">(lbs)</span></div></td> 
      <td>Hand Size <span style="font-size:10px;">(in)</span></td> 
      <td>Arm Length <span style="font-size:10px;">(in)</span></td> 
      <td><div align="center"><span style="font-size:14px;">Wonderlic</span></div></td> 
      <td><div align="center">40 <span style="font-size:12px;">Yard</span></div></td> 
      <td><div align="center"><span style="font-size:12px;">Bench Press</span></div></td> 
      <td style="font-size:14px;"><div align="center">Vert Leap <span style="font-size:10px;">(in)</span></div></td> 
      <td style="font-size:14px;"><div align="center">Broad Jump <span style="font-size:10px;">(in)</span></div></td> 
      <td>Shuttle</td> 
      <td>3Cone</td> 
      <td>60Yd Shuttle</td> 
     </tr> 
    </thead> 
    <tbody> 

그것은 마지막 줄을 계속합니다. 그러나 그것은 모든 내용입니다. 내가 실행한다면, :

from pyquery import PyQuery as pq 
table = pq(*stuff above*) 
for c in table('thead tr td'): 
    print c.text 

내가 얻을 : 그것은 올바른 아니에요으로

None 
None 
None 
None 
None 
None 
Hand Size 
Arm Length 
None 
None 
None 
None 
None 
Shuttle 
3Cone 
60Yd Shuttle 

은 분명히 나는 ​​'없음'사람을 원하지 않는다. 내가 thead tr td div의 다양한 콤보를 시도했지만, 나는 내가 얻는 것을 얻지 못한다. 그런 다음 div의 목록을 먼저 작성하고 목록을 결합하여 계산을 시도했지만 슈퍼 해키처럼 보이고 Wonderlic도 얻지 못합니다. 또한, 설명서에 text()을 사용하는 것 같지만 이 나옵니다. TypeError : 괄호를 추가하려고하면 'NoneType'개체를 호출 할 수 없습니다.. 어떤 통찰력이라도 대단히 감사하겠습니다. 감사합니다.

답변

0

따라서 htmlelements 대신 pyquery 항목을 가져 오기 위해 .items()를 쿼리 끝에 추가해야합니다. 일단 내가 이런 일을했다면 c.text()는 오류를 던지기보다 효과적이었습니다.

columns = [c.text() for c in table('thead tr td').items()] 

이것은 의도 한대로 pyquery API를 사용하는 것보다 훨씬 낫습니다.

1

코드에서 모든 태그를 읽고 true 또는 false로 태그의 값을 인쇄 할 수 있습니다. 이것을 시도해보십시오.

from pyquery import PyQuery as pq 
table = pq(*stuff above*) 
for c in table('thead tr td'): 
    if c.text == True: 
     print c.text 
    else: 
     continue 
+0

응답 해 주셔서 감사합니다. 이것은 시도한 첫 번째 방법이었고이 작업을 수행 한 다음 다른 레이어를 쿼리하여 계속 처리 할 수있었습니다. 그러나 문제는 'Wonderlic'과 같은 행에 대한 또 다른 레이어가 있다는 것입니다. 게다가 일반적으로 그것을 처리하고 싶었습니다. – exballer

관련 문제