当我这样做时,我的理解是:
agent = Mechanize.New
page = agent.get("http://www.stackoverflow.com/")
Mechanize会针对HTTP
发出GET
text/html
个请求。但是,当我在完整的Web浏览器(如Chrome / Firefox)中导航到Stackoverflow.com等网页时,浏览器会读取HTML页面,并对相关的CSS,图像,JavaScript等进行后续GET
次请求。
我可以想象解析由Mechanize返回的初始HTML并识别任何CSS,图像等,并发出后续请求,但有一种更简单的方法让Mechanize自动抓取所有或指定的组,也许只是图像网页的相关组件?
答案 0 :(得分:1)
不,Mechanize不会这样做。此外,Mechanize检索无法解析的非文本内容有什么意义呢?
相反,请确定所需的部分,并使用Net::HTTP,Curb,Open-URI,Typhoeus或任何其他基于HTTP的工具来检索内容并将其保存到磁盘。
实际上,除非我首先需要Mechanize来浏览某些表单,或者维护会话,否则我会编写一个使用Nokogiri来提取所需元素的小型Ruby脚本。如果你必须使用Mechanize进行初始导航,它会自动加载Nokogiri来处理它的DOM解析,所以可以在你可以给你的Mechanize页面上捎带,这是一个Nokogiri :: HTML文档。搜索右侧的相关链接以获取更多信息。
答案 1 :(得分:1)
我会看一下可用的Mechanize::PluggableParser
。其中一个可能会做你想要的。