我用 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")
}
在上面的示例代码片段中,我在一个网页的 css 选择器的帮助下抓取上述网站以获取海报信息、发布日期和发布的评论。现在假设如果网站管理员更改了论坛的布局。css 选择器将失败,因此我的整个刮板将失败。我不想在每次网站布局更改时更新我的爬虫。那么有什么方法可以让我的刮板检测到网站布局的变化,并且能够正确找到到达所需目的地的路径吗?因为我无法知道网站什么时候会发生变化。我只是想让我的刮板自动化和容错