Dav*_*ave 5 ruby encoding ruby-on-rails nokogiri
我正在使用Rails 5和Ruby 4.2并扫描我用Nokogiri解析的文档,以不区分大小写的方式查找带有文本的链接:
a_elt = doc ? doc.xpath('//a').detect { |node| /link[[:space:]]+text/i === node.text } : nil
Run Code Online (Sandbox Code Playgroud)
获取我的网页的HTML后content,我使用以下方法将其解析为Nokogiri文档:
doc = Nokogiri::HTML(content)
Run Code Online (Sandbox Code Playgroud)
问题是,我得到了
ArgumentError invalid byte sequence in UTF-8
Run Code Online (Sandbox Code Playgroud)
在使用上述正则表达式的某些网页上.
2.4.0 :002 > doc.encoding
=> "UTF-8"
2.4.0 :003 > doc.xpath('//a').detect { |node| /individual[[:space:]]+results/i === node.text }
ArgumentError: invalid byte sequence in UTF-8
from (irb):3:in `==='
from (irb):3:in `block in irb_binding'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/nokogiri-1.7.0/lib/nokogiri/xml/node_set.rb:187:in `block in each'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/nokogiri-1.7.0/lib/nokogiri/xml/node_set.rb:186:in `upto'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/nokogiri-1.7.0/lib/nokogiri/xml/node_set.rb:186:in `each'
from (irb):3:in `detect'
from (irb):3
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以重写上面的内容来自动解释编码或奇怪的字符而不是翻出来?
您的问题之前可能已经得到解答。您是否尝试过“是否有任何方法可以清除 Ruby 中存在“UTF-8 中的无效字节序列”错误的文件? ”中的方法?
具体来说,在detect块之前,尝试删除除换行符之外的无效字节和控制字符:
doc.scrub!("")
doc.gsub!(/[[:cntrl:]&&[^\n\r]]/,"")
Run Code Online (Sandbox Code Playgroud)
请记住,scrub!是一个Ruby 2.1+ 方法。
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |