如何收集多个网页的h1标题?

时间:2015-12-14 06:43:38

标签: dom smalltalk pharo squeak

我想浏览一些网页

 theURLs := #('url1' 'url2' 'url3')

并获取第一个h1标题的内容

theURLs collect: [ :anURL |  page := HTTPClient httpGetDocument: anURL.
                             page firstH1heading].

问题

我需要在#firstH1heading的地方放置什么?

欢迎使用Squeak / Pharo / Cuis的答案。

注意

在Squeak

HTTPClient httpGetDocument: 'http://pharo.org/'

回馈

MIMEDocument

所以我希望做一些像

这样的事情
theURLs collect: [ :anURL |  page := HTMLDocument on: 
                                     (HTTPClient httpGetDocument: anURL).
                             page firstH1heading].

但是在Squeak 4.6中没有HTMLDocument类,虽然它似乎曾经是一个。 (http://wiki.squeak.org/squeak/2249)。 Wiki表示我应该加载包网络HTML 。 Squeak 4.6的SqueakMap目录有一个包'XMLParser-HTML'。可以改用它吗?

2 个答案:

答案 0 :(得分:3)

在Pharo中,您可以使用Soup package。通过配置浏览器安装它。

您从带​​有Zinc的网址中检索文档,并找到第一个带有Soup的<h1>标记,如下所示:

|contents soup body|
contents := ZnClient new get: 'http://zn.stfx.eu/zn/small.html'.
soup := Soup fromString: contents.
body := soup body.
body findTag: 'h1'

答案 1 :(得分:2)

我已更新配置。您可能需要刷新目录

class GeoProxy : Proxy, CLLocationManagerDelegate
{
   var locationManager = CLLocationManager()

   override class var NAME: String { return "GeoProxy" }
}