2016-12-30 26 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'對象不可調用當我嘗試添加parens。任何有識之士將不勝感激。 謝謝!

回答

0

因此,事實證明,您必須在查詢的末尾添加.items()以獲取pyquery項而不是htmlelements。一旦我做了像c.text()這樣的工作,而不是拋出錯誤。

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

這是好得多,因爲它使用pyquery api的預期。

1

您的代碼能夠讀取所有標籤並打印標籤的值,不管它是真還是假。試試這可能有幫助。

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

相關問題