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

时间:2014-04-09 12:36:13

标签: python html beautifulsoup

我正在编写一个Python脚本,该脚本可以与某些HTML进行交互。我目前正在使用BeautifulSoup来解析这个HTML(之前我已经使用过XML和它真棒!!!)我想知道最好的方法是什么从HTML中提取时间(文本)信息。这是我在下面谈论的图片:

我试图提取" Room 225 8:00 am" ," Room 225 8:30 am"等等......

是否有人对BeautifulSoup函数有特定建议,该函数适用于从标签中提取文本?

enter image description here

这里也是原始的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 个答案:

答案 0 :(得分:5)

搜索label元素,然后使用element.string attribute获取标签文字。

在这里,或许CSS selector search很有帮助:

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