过滤BeautifulSoup

时间:2012-08-19 05:25:01

标签: python beautifulsoup

我正试图从另一个网页上获取大学及其网站的列表。

我已经输入了输入以显示我想要的每一行的HTML,但我正在尝试进一步格式化文本。我只想要显示大学名称和该大学的链接。有什么想法吗?

这是我的代码:

url = "http://www.arizona.edu/colleges"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
universities = soup.findAll('span', {'class' : 'field-content'})
for eachuniversity in universities:
   print eachuniversity

这是我为eachuniversity获得的一个例子:

<div class="views-field-title">
  <span class="field-content">
    <a href="/colleges/college-agriculture-life-sciences">
    <h3>College of Agriculture &amp; Life Sciences</h3>
    </a>
  </span>
</div>

1 个答案:

答案 0 :(得分:3)

以下内容将为您提供所需的信息。用于执行此操作的信息可通过BeautifulSoup documentationversion 4 documentation)轻松访问。

for uni in universities:
    link = uni.find("a")
    college_name = link.text
    web_page = link["href"]

对于第一个uni(你的例子):

>>> print web_page
"/colleges/college-agriculture-life-sciences"
>>> print college_name
College of Agriculture &amp; Life Sciences

我会留下处理相对/绝对链接和特殊HTML字符作为练习。


如何运作

most recent question我收集到您无法从uni对象中提取代码。您的universities变量是Tag个对象的集合,每个对象都是一个类似字典的对象,可用于访问其子对象。尝试阅读"Navigating the Parse Tree"以更好地处理解析如何与BeautifulSoup一起使用。