我遇到一些问题,需要从此页面提取我需要的正确信息:http://www.chronicle.com/article/Major-Private-Gifts-to-Higher/128264
理想情况下,我想了解学校的名称和每个学校的价值。
例如: 来自Gordon和Betty Moore以及Gordon和Betty Moore基金会的“加州理工学院,6亿美元,包括5年3亿美元和10年3亿美元;现金和股票; 2001 *”
理想的输出是: 加州理工学院,6亿美元
(以逗号分隔)
答案 0 :(得分:1)
您可以使用BeautifulSoup和Regular 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])