Ruby on rails 与Nokogiri一起拉网-一个具体的例子

Ruby on rails 与Nokogiri一起拉网-一个具体的例子,ruby-on-rails,nokogiri,Ruby On Rails,Nokogiri,寻找帮助让我开始。我正试图从这个网站上获取最新的游戏信息: 我真的很难用Nokogiri的语法来提取代码。我所看到和尝试过的所有例子都使用了比这个简单得多的站点 因此,如果我有: class BdcController < ApplicationController def bdc require 'nokogiri' require 'openssl' doc = Nokogiri::XML.parse(open('https://www.pinnacle

寻找帮助让我开始。我正试图从这个网站上获取最新的游戏信息:

我真的很难用Nokogiri的语法来提取代码。我所看到和尝试过的所有例子都使用了比这个简单得多的站点

因此,如果我有:

class BdcController < ApplicationController

def bdc
    require 'nokogiri'

    require 'openssl'

    doc = Nokogiri::XML.parse(open('https://www.pinnacle.com/en/odds/match/soccer/england/england-premier-league?sport=True', :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE))

    hometeam = doc.css('table.odds-data.game-name name').text #no idea what this line shoudl be to return e.g the first team in the list (currently Leicester City)

end

@grab=hometeam

end   
class BdcControllerOpenSSL::ssl::verify_NONE))
hometeam=doc.css('table.docks-data.game-name')。text#不知道这行应该返回什么,例如列表中的第一队(目前为莱斯特城)
终止
@抓取=主队
终止
它目前返回零(这并不奇怪,因为我无法计算出主队线应该是什么样子!)

有人能给我举个例子,说明主队起跑线应该读什么?提前谢谢

TD

在这里,我首先提取HTML,然后将其传递给Nokogiri

url = "https://www.pinnacle.com/en/odds/match/soccer/england/england-premier-league?sport=True"
html = HTTParty.get(url, verify: false).body
parser = Nokogiri::HTML(html, nil, Encoding::UTF_8.to_s)
parser.css('table.odds-data>tbody>tr>td.game-name>span').text
输出

"{{participant.Name}}{{'Draw' | guestlinesDraw}}{{participant.Pitcher}}"
顺便看看源代码,它没有您直接想要的东西。它被Javascript插入

如果您想刮取这样的文本,您应该使用SeleniumWeb驱动程序并使用不同的策略来解决这个问题


问题在于网站使用angular,因此其HTMLS响应如下:

 <td class="game-name name">
    <span ng-if="participant.Name != undefined">{{participant.Name}}</span>
    <span ng-if="participant.IsDraw == true">{{'Draw' | guestlinesDraw}}</span>
    <span ng-if="participant.IsDraw == false && !!participant.Pitcher" class="pitcher">{{participant.Pitcher}}</span>
</td>

{{participant.Name}
{{'Draw'| guestlinesDraw}
{{参与者.投手}

这样,您就无法从这些库中获取检索到的值。你必须使用一个模拟web浏览器的工具,这样它才能真正从角度呈现内容,并且你可以从这些变量中得到真实的值。无论如何,这并不十分简单。祝你好运

谢谢你的帮助,我想你的最后一点就是问题所在。我希望它在那个例子中输出“莱斯特城”,但这不在HTTPParty的源代码中。我会查找selenium…谢谢-这是我得出的结论,尽管我不知道是我不了解它还是网站的实际工作方式。将开始观察角度-尽管这可能太难了!!