Ruby Mechanize не получает полный контент - PullRequest
2 голосов
/ 20 февраля 2012

Я использую Mechanize и Nokogiri для анализа некоторых результатов лотереи на этих двух сайтах (они очень похожи): http://www1.caixa.gov.br/loterias/loterias/lotofacil/lotofacil_resultado.asp http://lotofacil.resultadoloteria.org/

Вот мой код:

require 'nokogiri'
require 'mechanize'

agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
page = agent.get('http://lotofacil.resultadoloteria.org/')
doc = Nokogiri::HTML(page.body)
doc.xpath('//table[@class="tabela_jogo"]//span').each { |value| puts value }

Второй сайт работает нормально. Результат:

<span id="lfacil1">01</span>
<span id="lfacil2">03</span>
<span id="lfacil3">05</span>
<span id="lfacil4">08</span>
<span id="lfacil5">10</span>
<span id="lfacil6">11</span>
<span id="lfacil7">13</span>
<span id="lfacil8">14</span>
<span id="lfacil9">15</span>
<span id="lfacil10">18</span>
<span id="lfacil11">20</span>
<span id="lfacil12">22</span>
<span id="lfacil13">23</span>
<span id="lfacil14">24</span>
<span id="lfacil15">25</span>

Но я не могу получить номера лото с первого раза. Вот результат:

<span id="lfacil1"></span>
<span id="lfacil2"></span>
<span id="lfacil3"></span>
<span id="lfacil4"></span>
<span id="lfacil5"></span>
<span id="lfacil6"></span>
<span id="lfacil7"></span>
<span id="lfacil8"></span>
<span id="lfacil9"></span>
<span id="lfacil10"></span>
<span id="lfacil11"></span>
<span id="lfacil12"></span>
<span id="lfacil13"></span>
<span id="lfacil14"></span>
<span id="lfacil15"></span>
<span id="lfacil1_2"></span>
<span id="lfacil2_2"></span>
<span id="lfacil3_2"></span>
<span id="lfacil4_2"></span>
<span id="lfacil5_2"></span>
<span id="lfacil6_2"></span>
<span id="lfacil7_2"></span>
<span id="lfacil8_2"></span>
<span id="lfacil9_2"></span>
<span id="lfacil10_2"></span>
<span id="lfacil11_2"></span>
<span id="lfacil12_2"></span>
<span id="lfacil13_2"></span>
<span id="lfacil14_2"></span>
<span id="lfacil15_2"></span>

Я думаю, что-то не так с Mechanize, потому что p page.body также возвращает содержимое без номеров лото. Есть идеи?

Спасибо. :)

1 Ответ

2 голосов
/ 20 февраля 2012

Это потому, что их там нет.Я нашел их для вас, хотя:

page = agent.get('http://www1.caixa.gov.br/loterias/loterias/lotofacil/lotofacil_pesquisa_new.asp')
numbers = page.body.split('|')[3..17]

также вместо этого:

doc = Nokogiri::HTML(page.body)

Механизм уже позаботился об этом для вас:

doc = page.parser
...