如何通过程序访问网站上的信息?

时间:2011-01-05 17:57:54

标签: language-agnostic

假设我想编写一个程序来读取IMDb中的电影信息,或者来自last.fm的音乐信息,或者来自weather.com等的天气信息,只需阅读网页并解析它就很安静乏味。网站通常会为此设置一个xml提要(例如last.fm)。

网站是否有针对此Feed的特定链接/标准?比如robot.txt,是否有类似的信息提供标准,或者每个网站都有自己的标准?

7 个答案:

答案 0 :(得分:1)

网站提供了不同的方式来访问这些数据。与Web服务,Feeds,Endpoints一样,可以查询数据。

还有一些程序用于从页面收集数据而不使用标准技术。这些程序称为Bots。这些程序使用不同的技术从网站获取数据(注意:小心数据可能受版权保护)

答案 1 :(得分:1)

最常见的此类标准是RSS和相关的Atom。两者都是用于Web内容的XML联合的格式。大多数软件库都包含用于解析这些格式的组件,因为它们很普遍。

答案 2 :(得分:1)

是的rss standard。并xml standard

答案 3 :(得分:1)

这是问题RSS或Atom供稿的设计目的,因此如果有RSS源,请查找RSS源的链接。它们的设计也很容易解析。这通常是在定期更新内容的网站上,例如新闻或博客。如果你很幸运,他们会为网站的不同方面提供许多不同的RSS提要(例如,Stackoverflow为问题提供的方式)

否则,该网站可能有一个可用于获取数据的API(如Facebook,Twitter,Google服务等)。如果做不到这一点,你将不得不诉诸于屏幕抓取以及与此相关的可能的版权和法律影响。

答案 4 :(得分:1)

听起来像你指的是RSS或Atom提要。这些是为源中的给定页面指定的;例如,打开此页面的源html并转到第22行。

Atom和RSS都是标准。它们都是基于XML的,每个都有很多解析器。

你提到屏幕抓取是“乏味”的选择;它通常也违反了网站的服务条款。这样做可能会阻止你。根据定义,饲料读数是允许的。

答案 5 :(得分:1)

有许多标准网站可以使用这些标准,具体取决于他们正在做什么以及他们想做什么。

RSS是一种用于以机器可解析的形式发送格式化数据块的协议。它代表“Real Simple Syndication”,通常用于新闻提要,博客以及定期或零星的新内容。有许多RSS阅读器允许用户订阅多个RSS源并定期检查它们是否有新数据。它的目的是轻量级。

AJAX是一种协议,用于将命令从网站发送到Web服务器,并以机器可解析的形式返回结果。它旨在与Web客户端上的JavaScript一起使用。 AJAX标准规定了如何格式化和发送请求以及如何格式化和发送回复,以及如何解析请求和回复。它倾向于由开发人员知道通过AJAX可以获得哪些命令。

SOAP是另一种类似AJAX的协议,但它的使用往往更多程序到程序,而不是从Web客户端到服务器。 SOAP允许通过使用WSTL格式的机器可读文件自动发现可用的命令,该文件基本上在XML中指定特定SOAP接口使用的方法签名和类型。

并非所有网站都使用RSS,AJAX或SOAP。 Last.fm,您列出的示例之一,似乎不支持RSS并使用它自己的基于Web的API从站点获取信息。在这些情况下,您必须找出他们的API(Last.fm似乎有详细记录)。

答案 6 :(得分:1)

选择获取数据的方法取决于应用程序。如果它的公共/商业应用程序屏幕抓取将不是一个选项。 (例如,如果您想在商业上使用IMDB信息,那么您需要根据其网站的使用政策签订合同,支付15000美元或更多)

我认为您的问题不是不知道获取网站信息的标准程序而是不知道您无法获取数据是由于网站不想提供该数据。

如果一个网站想要您能够使用他们的信息,那么几乎可以肯定会有一个记录良好的api接口,其中包含各种标准查询协议。

可以找到API列表here.

此特定网站上列出的数据格式包括:CSV,GeoRSS,HTML,JSON,KML,OPML,OpenSearch,PHP,RDF,RSS,文本,XML,XSPF,YAML,CSV,GEORSS。