使用BeautifulSoup,如何定位段落中的特定项目?

时间:2017-06-12 01:46:36

标签: python-3.x beautifulsoup

我遇到一些问题,需要从此页面提取我需要的正确信息:http://www.chronicle.com/article/Major-Private-Gifts-to-Higher/128264

理想情况下,我想了解学校的名称和每个学校的价值。

例如: 来自Gordon和Betty Moore以及Gordon和Betty Moore基金会的“加州理工学院,6亿美元,包括5年3亿美元和10年3亿美元;现金和股票; 2001 *”

理想的输出是: 加州理工学院,6亿美元

(以逗号分隔)

1 个答案:

答案 0 :(得分:1)

您可以使用BeautifulSoupRegular Expressions

来实现此目的

BeautifulSoup是一个python库,允许解析HTML和XML数据。

正则表达式允许搜索字符串中的某些模式。

from bs4 import BeautifulSoup
import re
import urllib.request

link = 'http://www.chronicle.com/article/Major-Private-Gifts-to-Higher/128264'
req = urllib.request.Request(link, headers={'User-Agent': 'Mozilla/5.0'})
sauce = urllib.request.urlopen(req).read()
soup = BeautifulSoup(sauce, 'html.parser')

university = {}

for x in soup.find_all('p'):
    name_tag = x.find('strong')
    if name_tag != None:
        name = name_tag.text
        t = x.text
        m = re.findall('\$([0-9]*)', t)
        if m != []:
            #There is a possibility that there are more than one values gifted.
            #For example, in case of CalTech there are 3 values [600, 300, 300]
            #This can be handled in two ways.
            #Either print the first value using m[0].
            #Or find the max element of the list using max(m)        
            print(name +', ' + m[0])