Я использую Rails 4.2.3. У меня есть этот код, который предназначен для получения содержимого URLКак предотвратить Nokogiri от добавления ненужных тегов HTML?
doc = Nokogiri::HTML(open(url))
Иногда URL будет возвращать HTML, но иногда он будет возвращать JSON. Я не знаю заранее. Я заметил, что когда URL-адрес возвращает JSON, Nokgiri добавляет все эти теги HTML перед ним. Вот то, что появляется в браузере:
{"list":[{"u":"1459808276_000001","i":"1459184695_000001","pid":"RDE8UZZZ”,”fname":"Alexi","lname”:”Jones”,”sex":"F","city":"Eugene","country":"US","country_iso":"us","course":"8k","class":"elite","race":"8K","name":"Alexi Jones”,”_ver":"14","tag":"0000001","bib":"1"}],"info":{"first":"1","last":"1","total":"1","cacheVer":"0~0"}}
Однако, когда я исполняю Nokogiri, это возвращается:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>{"list":[{"u":"1459808276_000001","i":"1459184695_000001","pid":"RDE8UZZZ”,”fname":"Alexi","lname”:”Jones”,”sex":"F","city":"Eugene","country":"US","country_iso":"us","course":"8k","class":"elite","race":"8K","name":"Alexi Jones”,”_ver":"14","tag":"0000001","bib":"1"}],"info":{"first":"1","last":"1","total":"1","cacheVer":"0~0"}}</p></body></html>
Как предотвратить Nokogiri добавлять дополнительные вещи? Я просто хочу, чтобы он точно возвращал то, что возвращается в браузер.
Когда я пытаюсь doc = Nokogiri::HTML.fragment(open(url))
, как рекомендуют другой SO ответ, я получаю ошибку:
error: undefined method `strip' for #<StringIO:0x007ff8acb34c30>
Отформатируйте ваш вопрос для удобства чтения. Усилия, которые вы вложили, помогают нам помочь вам. –