0

我应该首先说我没有太多使用 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 列表并通过它们计数以组合列表,但这似乎超级hacky而且我也没有得到Wonderlic。此外,似乎文档说要使用,但是当我尝试添加括号时text(),我得到TypeError: 'NoneType' object is not callable 。任何见解将不胜感激。谢谢!

4

2 回答 2

1

因此,事实证明,您必须将 .items() 添加到查询的末尾才能获取 pyquery 项目而不是 htmlelements。一旦我这样做了,像 c.text() 这样的事情就会起作用,而不是抛出错误。

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

这要好得多,因为它按预期使用了 pyquery api。

于 2016-12-31T05:00:37.407 回答
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
于 2016-12-30T08:47:08.687 回答