如何使用BeautifulSoup(Python)从HTML标签提取文本?

2 投票
1 回答
9531 浏览
提问于 2025-04-18 02:01

我正在写一个Python脚本,目的是去处理一些HTML内容。目前我在用BeautifulSoup来解析这些HTML(我之前也用过它处理XML,真是太棒了!!!),我想知道从HTML中提取时间(文本)信息的最佳方法是什么。下面是我说的内容的图片:

我想提取“Room 225 8:00am”、“Room 225 8:30am”等等……

有没有人能推荐一个具体的BeautifulSoup函数,适合用来从标签中提取文本?

在这里输入图片描述

这里还有原始的HTML(格式化过的):

<html>
 <body>
  <li class="zone even open day">
   <label for="srr-1-1397046600">
    Room 225 8:30 AM
   </label>
   <input id="srr-1-1397046600" name="srr-1-1397046600" type="checkbox" value="Y"/>
   <span class="drag-handle">
   </span>
  </li>
  ,
  <li class="zone even open day">
   <label for="srr-1-1397050200">
    Room 225 9:30 AM
   </label>
   <input id="srr-1-1397050200" name="srr-1-1397050200" type="checkbox" value="Y"/>
   <span class="drag-handle">
   </span>
  </li>
  ,
  <li class="zone even open day">
   <label for="srr-1-1397053800">
    Room 225 10:30 AM
   </label>
   <input id="srr-1-1397053800" name="srr-1-1397053800" type="checkbox" value="Y"/>
   <span class="drag-handle">
   </span>
  </li>
  ,
  <li class="zone even open day">
   <label for="srr-1-1397057400">
    Room 225 11:30 AM
   </label>
   <input id="srr-1-1397057400" name="srr-1-1397057400" type="checkbox" value="Y"/>
   <span class="drag-handle">
   </span>
  </li>
  ,
  <li class="zone even open day">
   <label for="srr-1-1397068200">
    Room 225 2:30 PM
   </label>
   <input id="srr-1-1397068200" name="srr-1-1397068200" type="checkbox" value="Y"/>
   <span class="drag-handle">
   </span>
  </li>
 </body>
</html>

1 个回答

6

首先,找到网页中的 label 元素,然后可以用 element.string 属性 来获取这个标签的文本内容。

在这里,使用 CSS 选择器搜索 可能会很有帮助:

for label in soup.select('li.zone label'):
    print label.string

示例:

>>> for label in soup.select('li.zone label'):
...     print label.string
... 
Room 225 8:30 AM
Room 225 9:30 AM
Room 225 10:30 AM
Room 225 11:30 AM
Room 225 2:30 PM

撰写回答