PyQuery找到子元素节点文本

时间:2015-10-16 03:18:50

标签: python pyquery

以下是代码:

from pyquery import PyQuery

content = '''<td field="exceptions"><div style="white-space:normal;height:auto;" \
class="datagrid-cell datagrid-cell-c2-exceptions">Traceback (most recent call last):<br>\
  File "./crawler.py", line 381, in &lt;module&gt;<br>   \
   crawler.start()<br>  File "./crawler.py", line 153, in start<br> \
      raise RemoteTransportException(e)<br>RemoteTransportException: \
      This socket is already used by another greenlet: &lt;bound method Waiter.\
      switch of &lt;gevent.hub.Waiter object at 0x7f64d499d6e0&gt;&gt;<br></div></td>'''
pq = PyQuery(content)

for content in pq('td div'):
    print content.text # get Traceback (most recent call last):


for content in pq('td div'):
    for sub in content.getchildren():
        print sub.text


# Traceback (most recent call last):
# None
# None
# None
# None
# None
# None

当你得到时,我希望获得td div元素中的内容,它应该是

Traceback (most recent call last):
File "./crawler.py", line 381, in <module>
crawler.start()
File "./crawler.py", line 153, in start
raise RemoteTransportException(e)
RemoteTransportException: This socket is already used by another greenlet: <bound method Waiter.switch of <gevent.hub.Waiter object at 0x7f64d499d6e0>>

但我得到了Traceback (most recent call last):。 那么如何查找td div中带有子标签的所有文本?

1 个答案:

答案 0 :(得分:1)

您可以改用BeautifulSoup:

import bs4
soup = bs4.BeautifulSoup(content)
soup.find('td').find('div').text
u'Traceback (most recent call last):  File "./crawler.py", line 381, in <module>      crawler.start()  File "./crawler.py", line 153, in start       raise RemoteTransportException(e)RemoteTransportException:       This socket is already used by another greenlet: <bound method Waiter.      switch of <gevent.hub.Waiter object at 0x7f64d499d6e0>>'