【发布时间】:2012-07-14 01:27:29
【问题描述】:
我用 ruby 编写了一个网络爬虫。但是我正在抓取的网站已经改变了他们的设计。因此我的抓取器失败了。有没有一种聪明而简单的解决方案来解决这种刮板固有的问题? (例如……使用某种模式匹配、xpaths、比较 DOM 树……等等)
EM.run {
http_request = EM::HttpRequest.new(url, opts).get
http_request.callback { |body|
doc = Nokogiri.parse(body.response)
doc = Nokogiri::HTML(body.response)
puts doc.css(".poster_information")
puts doc.css(".date")
puts doc.css(".comment_block")
}
在上面的示例代码 sn-p 中,我在一个网页的 css 选择器的帮助下抓取上述网站以获取海报信息、发布日期和 cmets。现在假设如果网站管理员更改了论坛的布局。 css 选择器将失败,因此我的整个刮板将失败。我不想在每次网站布局更改时更新我的爬虫。那么有什么方法可以让我的刮刀检测到网站布局的变化,它能够正确找到到达所需目的地的路径吗?因为我无法知道网站什么时候会发生变化。我只是想让我的刮刀自动化和容错
【问题讨论】:
-
请网站提供API?
-
如果没有您的源代码或对您的代码和您尝试解析的网站的非常详细的解释,我们将无法为您提供帮助。
-
我编辑了问题...提供了一个代码 sn-p 和我试图解析的网站...
-
希望这些网站同意这一点(提示:他们没有)。
-
@Baboon 这有点刻薄。
标签: ruby web-crawler scraper