gpt4 book ai didi

python - 从 ratemyprofessors.com 提取数据

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:32 25 4
gpt4 key购买 nike

背景信息:我想从 ratemyprofessor.com 提取数据 - 我的编程经验有限,所以我决定看看是否有预构建的东西来完成这项任务。

我在这里遇到了这个:https://classic.scraperwiki.com/scrapers/ratemyprofessors/

这正是我要找的。 ScraperWiki 已关闭,但已设置好将所有内容传输到 Morph.io - 我在这里所做的:https://morph.io/reddyfire/ratemyprofessors

我的问题:它不起作用。它应该输出一个数据库,为我提供我确定需要的信息。我假设它与它从中提取的 URL 有关:

response = scraperwiki.scrape("http://www.ratemyprofessors.com/SelectTeacher.jsp?sid=%s&pageNo=%s" % (sid,str(i)))

但我不知道这是否正确。我对此感到非常沮丧,但我想继续寻求解决方案。

我需要什么:我希望获得学院每位讲师的 **姓名、系、总评分、总体质量、易用性和热度评分。下面是一些所需格式的示例输出:

 {"953":("Stanford",32),"799":("Rice",17),"780":("Princeton",16)}

最佳答案

我测试过为您做一个简化的抓取工具。请注意,它不是 pythonic(即不漂亮或不快),但作为一个起点它是有效的。

__author__ = 'Victor'
import urllib
import re
url = 'http://www.ratemyprofessors.com/ShowRatings.jsp?tid=306975'

def crawlURL(addedURL):
url = addedURL
html = urllib.urlopen(url).read()

teacherData = re.findall(r'\">(.*?)</',html)

output = ''
addStuff = 0
for x in xrange(len(teacherData)):
if teacherData[x] == 'Submit a Correction':
output = 'professor: '
for y in xrange(4):
output += teacherData[x-8+y] + ' '
addStuff = 1
elif teacherData[x] == 'Helpfulness' and addStuff == 1:
output += ': Overall quality: '+ str(teacherData[x-2]) + ': Average grade: ' + str(teacherData[x-1]) + ': Helpfulness: ' + teacherData[x+1]
elif teacherData[x] == 'Easiness' and addStuff == 1:
output += ': Easiness: ' + str(teacherData[x+1])
addStuff = 0
break
print output
crawlURL(url)

它呈现这个输出:

Dr. Kimora John Jay College : Overall quality: 5.0: Average grade: A: Helpfulness: 5.0 : Easiness: 4.6

还有很大的改进空间,但这已经接近我能得到的伪代码了。

在这个例子中,它是一个打印输出的函数,如果你想将它添加到列表中,只需在末尾添加一个“返回输出”并使用“listName.append(crawlURL(url))”调用该函数

这适用于 Python 2.7

是的,它没有得到您请求的确切数据。它只是为你打开大门 ;)

编辑:这是一个关于如何循环请求的例子

def crawlURL(addesURL):
...
return output

baseURL = 'http://www.ratemyprofessors.com/ShowRatings.jsp?tid=306'
for x in xrange(50):
url = baseURL + str(x+110)
if crawlURL(url) != '': print crawlURL(url)

如果您正在遍历他们的所有数据,您应该考虑时不时地添加延迟,这样您就不会不小心对他们进行 DDoS 攻击。

关于python - 从 ratemyprofessors.com 提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28424064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com