Anemone可以抓取本地存储在我的硬盘上的html文件吗?

时间:2012-05-31 16:48:45

标签: ruby-on-rails ruby web-crawler scrape anemone

我希望将数万页政府数据(在几千个文件夹中)汇集在一起​​并将其全部放入一个文件中。为了加快这个过程,我想我先将网站下载到我的硬盘上,然后用像Anemone + Nokogiri这样的东西爬行。当我使用政府网站的在线URL尝试示例代码时,一切正常,但是当我将URL更改为本地文件路径时,代码会运行,但不会产生任何输出。这是代码:

url="file:///C:/2011/index.html"

Anemone.crawl(url) do |anemone|
  titles = []
  anemone.on_every_page { |page| titles.push page.doc.at

('title').inner_html rescue nil }
  anemone.after_crawl { puts titles.compact }
end

因此,本地文件名不会输出任何内容,但如果我插入相应的在线URL,它会成功运行。 Anemone是否无法抓取本地目录结构?如果没有,是否有其他建议的方法来执行此抓取/抓取,或者我应该只是在网站的在线版本上运行Anemone?感谢。

1 个答案:

答案 0 :(得分:1)

这种方法存在几个问题

  1. Anemone希望网址发出http请求,并且您正在传递一个文件。您只需使用nokogiri加载文件并通过它进行解析

  2. 文件上的链接可能是完整网址而不是相对路径,在这种情况下,您仍需要发出http请求

  3. 你可以做的是在本地下载文件,而不是使用nokogiri遍历它们并将链接转换为本地路径以便Nokogiri加载下一个