Ruby与Nokogiri网页解析编码问题解决方案咨询
解决Ruby Nokogiri解析Goodreads名言的乱码问题
问题根源
你遇到的乱码是错误的编码转换操作导致的:Goodreads网页本身采用UTF-8编码,而你手动执行的encode('iso-8859-1').force_encoding('utf-8')或cp1252转码逻辑,反而把原本正确的UTF-8字符(比如省略号…)破坏成了乱码â¦。
修正后的代码
直接移除错误的编码转换步骤,利用Nokogiri的内置方法更可靠地提取文本:
require 'nokogiri' require 'open-uri' require 'action_view' doc = Nokogiri::HTML(URI.open("https://www.goodreads.com/work/quotes/23218")) tags = doc.css('div.quoteText') # 直接提取标签内的纯文本,Nokogiri会自动处理编码 raw_text = tags[8].text.strip # 清理多余空格、换行,并分离名言和作者信息(按需调整) cleaned_quote = raw_text.gsub(/\s+/, ' ').split('―').first.strip puts cleaned_quote
代码说明
- 移除所有手动编码转换代码:Nokogiri会自动识别网页的UTF-8编码,无需额外转码操作。
- 使用
tags[8].text提取纯文本:比手动截取HTML字符串更稳定,避免标签解析错误。 - 额外的
strip和gsub用于清理冗余格式,split('―')是为了分离名言和作者部分,可根据实际需求调整。
运行结果
执行修正后的代码,会输出正确文本:
“…most of the damage we cause to the planet is the result of our own ignorance.”
内容的提问来源于stack exchange,提问作者sharataka
相关产品推荐
相关产品推荐

