没有为特定类中的文本调用find \u all的结果

2024-09-26 21:49:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获取特定类的所有文本,但返回的是空列表:

>>> soup.find_all(' dataRow odd')
[]

html格式:

<tr class=" dataRow odd" onblur="if (window.hiOff){hiOff(this);}" 
onfocus="if (window.hiOn){hiOn(this);}" onmouseout="if (window.hiOff){hiOff(this);}" 
onmouseover="if (window.hiOn){hiOn(this);}"><td class='actionColumn'>&nbsp;</td><th scope="row" class=" dataCell  ">
<a href="/a0I9000000hHJIN?btdid=0019000001piFE9">textexttext</a></th><td class=" dataCell  ">Active</td><td class=" dataCell  ">
<a href="/a089000001nOvG8?btdid=0019000001piFE9">BIG TEXT/a></td>
<td class=" dataCell  ">TEXTTEXTTEXT</td><td class=" dataCell  ">TEXTTEXTTEXT</td>
<td class=" dataCell  "> </td><td class=" dataCell  ">&nbsp;</td><td class=" dataCell  DateElement">8/02/2019</td></tr>

我正试图获取代码中的所有文本。 但当我运行代码时,它返回[],好像什么都没找到。你知道吗

import requests, bs4, re
html = open('2.html')
soup = bs4.BeautifulSoup(exampleFile, "lxml")
duh = soup .find_all(' dataRow odd')
print (duh)

我哪里出错了? 另外,理想情况下,代码会在不同的行上吐出所有单独的文本


Tags: 代码文本ifhtmlfindwindowthisclass
1条回答
网友
1楼 · 发布于 2024-09-26 21:49:24

查询dataRow odd会产生周围的<tr>,其中包括<td><a>等中的所有其他元素。您可以通过访问.text属性来获取文本,就像这样,它只会给您一大块文本而不是HTML:

for d in duh:
    print d.text

相反,您可以分别获取该<tr>中的所有<td>元素,并从每个元素获取.text。你知道吗

import requests, bs4, re

html = open('test.html')
soup = bs4.BeautifulSoup(html, "html.parser") # use html parser instead of XML
duh = soup.find_all('tr', {'class':' dataRow odd'}) # using ktb's suggestion from comments
for d in duh:
    tds = d.find_all()
    for td in tds:
        cleaned = td.text.strip().rstrip('\n') # remove newlines and spaces
        if cleaned != '':
            print cleaned

相关问题 更多 >

    热门问题