Beautifulsoap.find_all不会解析此特定标签(html)

时间:2018-12-16 15:42:28

标签: python html parsing beautifulsoup

我正在尝试解析如下所示的html:

<tbody>
  <tr id="row1" class="background-off-white"></tr>
    <td id="column_packet_nm__1">Text to be captured #1</td>
  <tr id="row2" class="background-off-white"></tr>
    <td id="column_packet_nm__2">Text to be captured #2</td>
  <tr id="row3" class="background-off-white"></tr>
    <td id="column_packet_nm__3">Text to be captured #3</td>
</tbody>

使用以下代码(python):

soup = bs(main_page, 'html.parser')
change = soup.find_all('td', {'id':'column_packet_nm__1'})
#print only first record among all, just for a confirmation
print(change[0].text)

但是问题是,每次说到它都会给我错误 “发生了异常:TypeError,类型为“ Response”的对象没有len()” 而且我不确定这段代码能否捕获所有这三行代码, 请帮忙。

1 个答案:

答案 0 :(得分:0)

确保main_page不是Response对象(来自请求)。它应该是对象的字符串文本。看来您的main_page变量是一个请求Response对象。

所以,如果您在某处有这样的东西:

main_page = requests.get(url)

您可以使用.text

soup = bs.BeautifulSoup(main_page.text, 'html.parser')