如何模拟 rb 文件中的选项标签选择
How to simulate a option tag selection inside a rb file
The rankings page of the WTA website 显示前 100 名网球运动员的列表。
<option>
标签与 <select>
标签一起使用来呈现选项列表,以便用户可以 select 排名在 101 和 200 位置之间的玩家等等(按组100 名玩家)。
我想使用 Nokogiri
从该页面抓取信息。
对于前 100 名玩家,我可以使用原始网址。然而,url不会随着用户select的不同范围播放器而改变,虽然我习惯添加/pag/101
/pag/201
/pag/301
等等上述网址。这个技巧奏效了,但是新的 url 不太可靠。我经常收到 HTTPError: 504 Gateway Time-out
错误。
所以我虽然有可能留在原始地址并模拟来自选项标签的select离子。
可能网站使用Ajax
刷新页面信息。
在页面刷新之前,我注意到网络检查器中有一个 <div class="ajaxLoader">
元素。
我找到了 <option>
标签内容的 xPath 表达式:
//div[@id='jump1']/div[@class='jump-to']/select[@class='rankings-rank-change']/option[@value='1']
正在更改 @value
select 的不同选项。
我想知道是否有任何方法可以从页面触发这些值并在 rb 文件中进行 Ajax 调用。
打开开发者工具,查看Network
选项卡,可以看到当你更改select里面的选项时,页面会触发一个ajax调用,获取其他结果.
解析此信息的一种策略是:
- 从select
中获取选项的个数
- 遍历它对每个页面进行 ajax 调用
- 从ajax结果中解析结果
URL 是 http://www.wtatennis.com/fragment/wtaTennis/fragments/assets/rankings/rankingsData/type/SINGLES/date/02022017/pag/{page},您需要在其中更改 {page}
循环内的数字。
代码应如下所示:
make request to first page: http://www.wtatennis.com/singles-rankings
parse the first 100 results, get data
get the number of pages from the select
make request to i page: http://www.wtatennis.com/fragment/wtaTennis/fragments/assets/rankings/rankingsData/type/SINGLES/date/02022017/pag/i
parse results from this one
next index on loop
now you have all the data
希望这对您有所帮助。
The rankings page of the WTA website 显示前 100 名网球运动员的列表。
<option>
标签与 <select>
标签一起使用来呈现选项列表,以便用户可以 select 排名在 101 和 200 位置之间的玩家等等(按组100 名玩家)。
我想使用 Nokogiri
从该页面抓取信息。
对于前 100 名玩家,我可以使用原始网址。然而,url不会随着用户select的不同范围播放器而改变,虽然我习惯添加/pag/101
/pag/201
/pag/301
等等上述网址。这个技巧奏效了,但是新的 url 不太可靠。我经常收到 HTTPError: 504 Gateway Time-out
错误。
所以我虽然有可能留在原始地址并模拟来自选项标签的select离子。
可能网站使用Ajax
刷新页面信息。
在页面刷新之前,我注意到网络检查器中有一个 <div class="ajaxLoader">
元素。
我找到了 <option>
标签内容的 xPath 表达式:
//div[@id='jump1']/div[@class='jump-to']/select[@class='rankings-rank-change']/option[@value='1']
正在更改 @value
select 的不同选项。
我想知道是否有任何方法可以从页面触发这些值并在 rb 文件中进行 Ajax 调用。
打开开发者工具,查看Network
选项卡,可以看到当你更改select里面的选项时,页面会触发一个ajax调用,获取其他结果.
解析此信息的一种策略是:
- 从select 中获取选项的个数
- 遍历它对每个页面进行 ajax 调用
- 从ajax结果中解析结果
URL 是 http://www.wtatennis.com/fragment/wtaTennis/fragments/assets/rankings/rankingsData/type/SINGLES/date/02022017/pag/{page},您需要在其中更改 {page}
循环内的数字。
代码应如下所示:
make request to first page: http://www.wtatennis.com/singles-rankings
parse the first 100 results, get data
get the number of pages from the select
make request to i page: http://www.wtatennis.com/fragment/wtaTennis/fragments/assets/rankings/rankingsData/type/SINGLES/date/02022017/pag/i
parse results from this one
next index on loop
now you have all the data
希望这对您有所帮助。