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

标签 dom smalltalk pharo squeak

我想浏览几个网页

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

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

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

问题

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

欢迎为 Squeak/Pharo/Cuis 提供答案。

注意

吱吱声

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说我应该加载一个包Network-HTML。 Squeak 4.6 的 SqueakMap 目录有一个包“XMLParser-HTML”。可以用这个代替吗?

最佳答案

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

您使用 Zinc 从 URL 检索文档,并找到第一个 <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'

关于dom - 如何收集多个网页的 h1 标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34261139/

相关文章:

jquery - 获取 JQueryInstance 的值

Smalltalk - 是否可以通过方法将字符串添加到 String 实例?

operator-overloading - Smalltalk 中的运算符可以重载吗?

reflection - 如何获得 Pharo 中的*所有*类(class)?

menuitem - 在 Spec 的 MultiColumnList 中打开菜单会给出 MNU

javascript - 动态设置选择元素宽度等于其选项的内容宽度

javascript - 使用 Javascript 从 HTML 中过滤和提取

javascript - 单击 svg 元素时应用焦点 css

javascript - 使用 Javascript 的 Laravel 4 render() PDF

ubuntu - 无法在 Ubuntu14.10 上安装 Pharo