.查找未返回完整对象

2024-09-29 21:47:54 发布

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

我想用BeautifulSoup在我们的手机GWs里搜一页电话号码。使用soup.find和soup.find\u all不会返回我要查找的完整元素。这是我第一个使用BeautifulSoup的脚本,所以我可能忽略了一些东西

这就是我要拉的html中的块

<tr class='styReportFooter'>
  <td align='center'><span class='styPageTitle'>Totals</span></td>
  <td align='center' id='column1' style='display:none;'><span 
class='styPageTitle'>1862</span></th>
  <td align='center' id='column2' style='display:none;'><span 
class='styPageTitle'>153</span></th>
  <td align='center' id='column3' style='display:none;'><span 
class='styPageTitle'>12</span></th>
</tr>

还有我的问题

total = soup.find('tr', attrs={'class': 'styReportFooter'})

我本想得到整个街区,但我得到的却是:

<tr class="styReportFooter">
<td align="center"><span class="styPageTitle">Totals</span></td>
<td align="center" id="column1" style="display:none;"><span 
class="styPageTitle">1862</span></td></tr>

它从第1列抓起,然后跳到


Tags: noneidstyledisplayfindtrclasstd
1条回答
网友
1楼 · 发布于 2024-09-29 21:47:54

将解析器更改为lxml。如果HTML格式不好,不同的解析器将对其进行不同的处理

Differences between parsers.

from bs4 import BeautifulSoup
html="""
<tr class='styReportFooter'>
  <td align='center'><span class='styPageTitle'>Totals</span></td>
  <td align='center' id='column1' style='display:none;'><span
class='styPageTitle'>1862</span></th>
  <td align='center' id='column2' style='display:none;'><span
class='styPageTitle'>153</span></th>
  <td align='center' id='column3' style='display:none;'><span
class='styPageTitle'>12</span></th>
</tr>
"""
soup=BeautifulSoup(html,'lxml')
total = soup.find('tr', attrs={'class': 'styReportFooter'})
print(total)

输出:

<tr class="styReportFooter">
<td align="center"><span class="styPageTitle">Totals</span></td>
<td align="center" id="column1" style="display:none;"><span class="styPageTitle">1862</span>
</td><td align="center" id="column2" style="display:none;"><span class="styPageTitle">153</span>
</td><td align="center" id="column3" style="display:none;"><span class="styPageTitle">12</span>
</td></tr>

如果我使用上面的soup=BeautifulSoup(html,'html.parser'),我会得到

<tr class="styReportFooter">
<td align="center"><span class="styPageTitle">Totals</span></td>
<td align="center" id="column1" style="display:none;"><span class="styPageTitle">1862</span></td></tr>

相关问题 更多 >

    热门问题