如何使用Beautiful Soup提取HTML标记内的特定文本?

时间:2013-05-25 05:20:51

标签: python python-2.7 web-scraping beautifulsoup html-parsing

我有一个像这样的HTML标签:

<ul class="clearfix">
  "<li><span class="bold-title">Starts:</span> October 2013</li>"
</ul>

我想提取“2013年10月” 我的代码是:

start_date = articl.find('ul', class_='clearfix').find('li').text.strip()

...摘录“开始时间:2013年10月”。

如何只拍摄日期?

3 个答案:

答案 0 :(得分:1)

使用正则表达式:

import re

ss = '''
<ul class="clearfix">
  <li><span class="bold-title">Starts:</span> October 2013</li>"
</ul>

blah blah

<ul class="clearfix">
  <li><<a href="/derives/certificats/"> November 2014     </li>"
</ul>
   '''

regx = re.compile('<ul +class="clearfix">.+?'
                  '<li>.*? *([^<>]+?) *</li>',
                  re.DOTALL)

print regx.findall(ss)

# prints ['October 2013', 'November 2014']

答案 1 :(得分:0)

使用.contents,它返回一个列表:

>>> from bs4 import BeautifulSoup as BS
>>> html = (stuff above)
>>> soup = BS(html)
>>> print soup.find('li').contents[1].strip()
October 2013

答案 2 :(得分:0)

hold = li.text
for eachTag in li.findAll():
    hold = hold.replace(eachTag.text,'')