寻求帮助来帮助我入门。我正在尝试从该网站抓取最新的游戏信息:
https://www.pinnacle.com/en/odds/match/soccer/england/england-premier-league
我真的很纠结使用 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
它目前返回零(这并不奇怪,因为我无法计算出主队线应该是什么样子!)
有人能给我一个例子,说明主队首发的那句话应该读什么吗?提前致谢!
TD
最佳答案
给你,我用HTTParty首先提取 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 进行插值。
如果你想抓取这样的文本,你应该使用 selenium web 驱动程序并使用不同的策略来解决这个问题。
关于ruby-on-rails - 使用 Nokogiri 进行网页抓取 - 一个具体示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49695304/