首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nokogiri丢失属性

Nokogiri丢失属性
EN

Stack Overflow用户
提问于 2013-04-10 18:30:55
回答 1查看 277关注 0票数 0

我只是尝试用nokogiri解析来代理网站。

我的控制器动作

代码语言:javascript
运行
复制
des show
  @url                = 'http://www.femmeactuelle.fr/'
  @with_nokogiri      = Nokogiri::HTML(open(@url).read).to_html
  @without_nokogiri   = open(@url).read

  if params.has_key? :nokogiri
    render text: @with_nokogiri, layout: false
  else
    render text: @without_nokogiri, layout: false
  end
end

如果我在?nokogiri=foo,中使用这个动作,身体就会失去它的id。知道是什么原因吗?我只想要与浏览器使用nokogiri解析后看到的相同的html。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 23:58:15

我不能重复Nokogiri在有效的HTML中从<body>标记中剥离<body>参数的问题。以下是我的Nokogiri/LibXML和Ruby的详细信息:

代码语言:javascript
运行
复制
nokogiri: 1.5.9
ruby:
  version: 1.9.3
  platform: x86_64-darwin10.8.0
  description: ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin10.8.0]
  engine: ruby
libxml:
  binding: extension
  compiled: 2.7.7
  loaded: 2.7.7

下面是对Nokogiri的简单测试:

代码语言:javascript
运行
复制
doc = Nokogiri::HTML('<html><body id="foo">bar</body></html>')

puts doc.to_html

返回:

代码语言:javascript
运行
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body id="foo">bar</body></html>

当我解析'http://www.femmeactuelle.fr/‘时,Nokogiri的errors方法返回许多错误,包括<head><body>中的错误。Nokogiri试图在文档被破坏时修复它,这可能导致标记被移动,或者,正如我在本例中所怀疑的那样,参数丢失了。

验证文档返回各种错误,所以我认为问题在Nokogiri之外。如果您想在将它传递给Nokogiri之前尝试修复它,您可以通过HTMLTidy发送该文件,然后查看Nokogiri是否能够更好地理解它。否则,花一些时间在HTML中挖掘,找出什么是坏的,并编写一些字符串操作代码来修补它。

不能将浏览器呈现的页面源与解析器(如Nokogiri )输出的内容进行比较。它们是非常不同的代码片段,有着非常不同的目标。浏览器想要使页面呈现某种内容,并且有各种各样的退步来处理损坏的HTML。解析器不这样做,因为它的工作是将HTML或XML准确地转换成它的真正结构,这样我们就可以深入研究它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15933650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档