Ruby on rails 与Nokogiri一起拉网-一个具体的例子
寻找帮助让我开始。我正试图从这个网站上获取最新的游戏信息: 我真的很难用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
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…谢谢-这是我得出的结论,尽管我不知道是我不了解它还是网站的实际工作方式。将开始观察角度-尽管这可能太难了!!