ruby、nokogiri、xpath 和 pgatour.com
ruby, nokogiri, xpath and pgatour.com
我正在尝试使用 ruby 脚本从 pgatour.com 中提取一些历史数据,但我似乎根本无法提取任何数据。
我知道之前已经讨论过这个问题,但我已经尝试了我遇到的所有解决方案,但都一无所获,所以现在我将一切都剥离到我能想到的最基本的东西试着找出是我还是网站。
我现在只是试图获取 table 的一个元素,然后将其打印到控制台
为了获取xpath,我打开了chrome开发者工具,在table中找到了一个分数,然后右键复制Xpath,然后直接在代码中使用它,但仍然一无所获
require 'open-uri'
require 'nokogiri'
url = "http://www.pgatour.com/tournaments/safeway-open/past-results.html"
html = open(url)
doc = Nokogiri::HTML(html)
puts doc.xpath('//*[@id="pastResultsData"]/ul/li[1]/table/tbody/tr[2]/td[5]').text
我是不是做错了什么?或者网站的结构是否像我上面所做的那样的简单解决方案不起作用?
首先查看 HTML 是静态的还是动态的 真的 很重要。有很多方法可以做到这一点,但一个非常简单的测试是在命令行中使用 Nokogiri:
>nokogiri 'http://www.pgatour.com/tournaments/safeway-open/past-results.html'
Your document is stored in @doc...
Welcome to NOKOGIRI. You are using ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]. Have fun ;)
>> @doc.at('#pastResultsData')
<div id="pastResultsData" class="clearfix module-tournament-past-results"/>
查找 #pastResultsData
将找到具有该 ID 的任何标签。返回值显示 <div>
标签为空,这通常意味着它正在等待用作容器,稍后由 DHTML.
填充
并且,在这一点上 Nokogiri 无法帮助您,您需要检索内容然后解析它,或者使用解析 JavaScript.
的东西
我正在尝试使用 ruby 脚本从 pgatour.com 中提取一些历史数据,但我似乎根本无法提取任何数据。
我知道之前已经讨论过这个问题,但我已经尝试了我遇到的所有解决方案,但都一无所获,所以现在我将一切都剥离到我能想到的最基本的东西试着找出是我还是网站。
我现在只是试图获取 table 的一个元素,然后将其打印到控制台
为了获取xpath,我打开了chrome开发者工具,在table中找到了一个分数,然后右键复制Xpath,然后直接在代码中使用它,但仍然一无所获
require 'open-uri'
require 'nokogiri'
url = "http://www.pgatour.com/tournaments/safeway-open/past-results.html"
html = open(url)
doc = Nokogiri::HTML(html)
puts doc.xpath('//*[@id="pastResultsData"]/ul/li[1]/table/tbody/tr[2]/td[5]').text
我是不是做错了什么?或者网站的结构是否像我上面所做的那样的简单解决方案不起作用?
首先查看 HTML 是静态的还是动态的 真的 很重要。有很多方法可以做到这一点,但一个非常简单的测试是在命令行中使用 Nokogiri:
>nokogiri 'http://www.pgatour.com/tournaments/safeway-open/past-results.html'
Your document is stored in @doc...
Welcome to NOKOGIRI. You are using ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]. Have fun ;)
>> @doc.at('#pastResultsData')
<div id="pastResultsData" class="clearfix module-tournament-past-results"/>
查找 #pastResultsData
将找到具有该 ID 的任何标签。返回值显示 <div>
标签为空,这通常意味着它正在等待用作容器,稍后由 DHTML.
并且,在这一点上 Nokogiri 无法帮助您,您需要检索内容然后解析它,或者使用解析 JavaScript.
的东西