0

有没有一种方法可以使用 java 或 python 以某种方式从大学板等网站上的大量不同大学收集大量信息?

我想知道如何做这样的事情,但我从来没有真正在默认库之外进行过编程。我不知道如何开始我的方法。

例子:

我在一个看起来有点像这样的列表上输入了大量大学列表

https://bigfuture.collegeboard.org/print-college-search-results

然后代码会找到每个学院的页面,例如

https://bigfuture.collegeboard.org/college-university-search/alaska-bible-college?searchType=college&q=AlaskaBibleCollege

然后从页面收集信息,例如学费,大小等。

然后将它存储在我可以用于分析和东西的类中

这样的事情甚至可能吗?我记得在社交网络中看到过类似的程序。我该怎么办?

4

4 回答 4

0

What you're asking about here is called scraping and in general it's quite tricky to do right. You have to worry about a bunch of things:

  1. The data is formatted for display, not programmatic consumption. It may be messy, inconsistent, or incomplete.
  2. There may be dynamic content, which means you might have to run a JavaScript VM or something just to get the final state of the page.
  3. The format could change, often.

So I'd say the first thing you should do is see if you can access the data some other way before you resort to scraping. If you poke around in the source for those pages, you might find a webservice feeding data to the display layer in XML or JSON. That would be a much better place to start.

于 2013-06-01T01:41:33.640 回答
0

好的,谢谢大家的帮助。这就是我最终如何做到的。我花了一点时间,但幸运的是,collegeboard 使用了非常简单的地址。

基本上有 3972 所大学,每所大学都有一个独特的纯文本页面,其地址如下:

https://bigfuture.collegeboard.org/print-college-profile?id=9

但 id=(1-3972)。

使用一个名为 HTMLunit 的库,我能够访问所有这些页面,将它们转换为字符串,然后使用 indexOf 收集信息。

处理所有这些仍然需要大约 16 个小时,但我已经节省了大约 100 个小时。

也许我在打印页面上很幸运,但我得到了我需要的东西,感谢您的帮助!

于 2013-06-01T18:30:32.060 回答
0

当然有“办法”。但没有简单的方法

您需要编写一堆代码,从 HTML 中提取您感兴趣的内容。然后,您需要编写代码将该信息转换为与您的数据库模式匹配的形式......并进行数据库更新。

有一些工具可以帮助解决部分问题;例如,用于获取页面的网络爬虫框架、用于解析 HTML 的 JSoup、如果页面是“动态”的 Javascript 引擎等。但我不知道有什么可以完成整个工作。

于 2013-06-01T01:33:10.053 回答
0

所以,简短的回答,是的。这是完全可能的,但你需要先学习一堆东西:

1) DOM 模型 (HTML) 的基础知识,以便您可以解析页面 2) 服务器和数据库如何工作的一般概念(以及如何在 python 中与它们交互——我使用的是什么,或 java) 3) 有点像第 2 小节:了解如何从服务器检索 HTML 文档然后进行解析

然后,一旦你这样做了,这就是程序必须经历的过程:

1)您需要提供要搜索的页面列表。如果要搜索整个网站,则需要缩小范围。您可以轻松地将您的程序限制为仅搜索某些类型的论坛,这些论坛在大学理事会上都具有相同的格式。您还需要添加程序的一部分,以构建您的程序找到链接的网页列表。例如,如果 Collegeboard 有一个页面,其中包含大量指向具有统计信息的不同页面的链接,那么您将希望您的程序扫描该页面以找到指向具有这些统计信息的页面的链接。

2) 您需要找到包含您想要的信息的 HTML 标记的 ID、位置或一些识别标记。如果您想获得真正的花哨(我的意思是非常花哨),您可以尝试使用一些算法来解析文本并尝试获取信息(也许尝试从论坛上的文本中解析录取统计数据和内容)

3)然后您需要将该信息存储在数据库中,然后索引并创建一个界面以进行搜索(如果您希望整个过程在线,我建议使用 python 框架 Django 使其成为 Web 应用程序)。对于数据库类型,使用 Sqlite 3 (I) 是有意义的

所以是的,这是完全有可能的,但这里有个坏消息:

1)正如有人已经评论过的那样,您需要为您所做的每种网页格式找出第 2 步。(网页格式是指不同的页面,不同的布局。栈溢出首页和这个页面不同,但是所有的问题页面都遵循相同的格式)

2) 您不仅需要为每个新网站重复第 2 步,而且如果网站进行了重新设计,您还必须重新设计。

3) 当你完成程序时,你可能已经很容易地自己收集了信息。

替代和不太酷的选择

无需费尽心思或在网页上搜索特定信息,您只需搜索网页并提取其所有文本,然后尝试在与大学相关的文本中查找关键词。

但是等等,已经有一些东西可以做到这一点!它被称为谷歌:)。这基本上就是谷歌的工作方式,所以......是的。

于 2013-06-01T01:33:48.830 回答