0

我试图从 Readmill 中提取亮点,但似乎获得它们的最简单方法是使用搜索而不是 API。

在......的最后

https://readmill.com/search?q=%22the+great+gatsby%22+%22Francis+Scott+Fitzgerald%22&filter=highlight

你发现

<script type="text/javascript" id="page-template-data">
  App.templateData.filter = 'highlight';
App.templateData.searchResult = 

然后是一堆 JSON。有没有一种方便的 Rails 友好方式来解析这个 JSON?

4

1 回答 1

2

好吧,搜索结果都在一条线上,这对您有所帮助。现在,如果他们对此进行任何更改,这将打破。但这将使用文本操作将其提取到 JSON 数组中:

require 'open-uri'
require 'json'

json = {}
open('https://readmill.com/search?q=the+great+gatsby&filter=highlight').each do |line|
  if line =~ /App.templateData.searchResult/
    json = JSON.parse line.sub('App.templateData.searchResult = ','').strip.to_s[0..-2]
    break
  end
end

puts json.map{|j| j["title"] }
 => “Gatsby?” demanded Daisy. “What Gatsby?”
    ...
于 2013-06-09T18:37:54.960 回答