0

我的理解是,当我这样做时:

agent = Mechanize.New
page = agent.get("http://www.stackoverflow.com/")

机械化将HTTP GET请求text/html. 但是,当我在完整的网络浏览器(如 Chrome/Firefox)中导航到诸如 Stackoverflow.com 之类的网页时,浏览器会读取 HTML 页面并随后GET请求相关的 CSS、图像、JavaScript 等。

我可以想象解析 Mechanize 返回的初始 HTML 并识别任何 CSS、图像等,并发出后续请求,但有没有更简单的方法让 Mechanize 自动抓取所有或指定的组,也许只是关联的图像网页的组成部分?

4

2 回答 2

1

不,Mechanize 不会那样做。此外,Mechanize 检索它无法解析的非文本内容有什么意义?

相反,确定您想要的部分,并使用Net::HTTPCurbOpen-URITyphoeus或任何其他基于 HTTP 的工具来检索内容并将其保存到磁盘。

实际上,除非我需要 Mechanize 首先浏览某些表单或维护会话,否则我会编写一个使用 Nokogiri 提取所需元素的小型 Rub​​y 脚本。如果您必须使用 Mechanize 进行初始导航,它会自动加载 Nokogiri 以处理其 DOM 解析,因此它可以为您提供 Mechanize 页面,这是一个 Nokogiri::HTML 文档。搜索右侧的相关链接以获取更多信息。

于 2013-05-02T21:28:14.410 回答
1

I would take a look at the Mechanize::PluggableParsers that are available. One of them probably does what you want.

于 2013-05-02T22:48:06.827 回答