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

标签 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. Anemone 需要一个网址来发出 http 请求,而您正在向它传递一个文件。您可以只使用 nokogiri 加载文件并通过它进行解析

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

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

关于ruby-on-rails - Anemone 可以抓取本地存储在我硬盘上的 html 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837856/

相关文章:

json - 如何在Ruby中解析一个json文件

ruby - 导入 YAML 文件时如何使用内部/外部编码?

c# - simhash函数真的那么靠谱吗?

java - 我应该能够同时打开多少个 Java HttpURLConnection?

python - 我想要进行网页抓取,但是有些项目被抓取,但有些项目没有被抓取。我不知道原因

ruby-on-rails - ActiveRecord `.select` 方法可以有像 `.where` 这样的内插字符串吗?

ruby-on-rails - 在生产环境中使用预编译 Assets 时引发 RoutingError

ruby-on-rails - 使用 Rails 通过 URL 加载数据时 C3.js 的基本 JSON 格式

ruby - 让 RVM 与 Jenkins Pipeline 配合使用

ruby-on-rails - 在 rails3 中覆盖模型名称的默认复数形式