使用BeautifulSoup提取网页标题中的部分文本

时间:2014-01-17 08:43:59

标签: python beautifulsoup

我想在此页http://www.arizona.edu/colleges/college-agriculture-life-sciences上提取标题文字。

这是我到目前为止的代码:

from bs4 import BeautifulSoup
import re
import urllib2

url = "http://www.arizona.edu/colleges/college-agriculture-life-sciences"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read())

uni_name=soup.title

print uni_name

然而结果是:

<title>College of Agriculture &amp; Life Sciences | The University of Arizona, Tucson, Arizona</title>

但我的理想结果是:

College of Agriculture & Life Sciences

我该怎么做?

2 个答案:

答案 0 :(得分:2)

.string属性只为您提供标记文字:

uni_name = soup.title.string

如果您只想使用第一部分,请在|管道上拆分:

uni_name = soup.title.string.partition('|')[0].strip()

这使用str.partition()只拆分一次(为了效率),获取结果的第一部分,并删除该结果周围的任何额外空格。

演示:

>>> soup.title
<title>College of Agriculture &amp; Life Sciences | The University of Arizona, Tucson, Arizona</title>
>>> soup.title.string
u'College of Agriculture & Life Sciences | The University of Arizona, Tucson, Arizona'
>>> soup.title.string.partition('|')[0].strip()
u'College of Agriculture & Life Sciences'

答案 1 :(得分:1)

您可以尝试使用此库(Goose)。

我试图为一些带有beautifulsoup的网站创建我自己的提取器,但后来我意识到Goose完全符合我的需要。