关键词:
require "mechanize"
require "sinatra"
require "stringio"
class MedalScraper
def initialize
@sports =
'archery' => 'Archery',
'athletics' => 'Athletics',
'badminton' => 'Badminton',
'basketball' => 'Basketball',
'beach-volleyball' => 'Beach Volleyball',
'boxing' => 'Boxing',
'canoe-slalom' => 'Canoe Slalom',
'canoe-sprint' => 'Canoe Sprint',
'cycling-bmx' => 'Cycling BMX',
'cycling-mountain-bike' => 'Cycling Mountain Bike',
'cycling-road' => 'Cycling Road',
'cycling-track' => 'Cycling Track',
'diving' => 'Diving',
'equestrian' => 'Equestrian',
'fencing' => 'Fencing',
'football' => 'Football',
'gymnastics-artistic' => 'Gymnastics Artistic',
'gymnastics-rhythmic' => 'Gymnastics Rhythmic',
'handball' => 'Handball',
'hockey' => 'Hockey',
'judo' => 'Judo',
'modern-pentathlon' => 'Modern Pentathlon',
'rowing' => 'Rowing',
'sailing' => 'Sailing',
'shooting' => 'Shooting',
'swimming' => 'Swimming',
'synchronized-swimming' => 'Synchronized Swimming',
'table-tennis' => 'Table Tennis',
'taekwondo' => 'Taekwondo',
'tennis' => 'Tennis',
'gymnastic-trampoline' => 'Trampoline',
'triathlon' => 'Triathlon',
'volleyball' => 'Volleyball',
'water-polo' => 'Water Polo',
'weightlifting' => 'Weightlifting',
'wrestling' => 'Wrestling'
;
end
def fetch(force = false)
if force || @data.nil? || Time.now - @last_run >= 3600 # one hour
@last_run = Time.now
@data = scrap
else
@data
end
end
private
def scrap
agent = Mechanize.new
# agent.set_proxy 'localhost', 3128
io = StringIO.new
io.puts "<pre>"
io.puts "Last update: #@last_run"
io.puts
@sports.each do |key, name|
io.puts "#name: "
puts "#name"
agent.get("http://www.london2012.com/#key/medals/") do |page|
medal_table = page.parser.css('table.overall_medals tbody tr')
if medal_table.length > 0
medal_table.each_with_index do |tr, i|
country = tr.at_css('span.countryName').text
gold = tr.at_css('td.gold').text.to_i
next if gold == 0
io.puts "#country: #gold"
end
else
io.puts "None"
end
end
io.puts
end
io.string
end
end
get "/" do
@@medal_scraper ||= MedalScraper.new
@@medal_scraper.fetch
end
ruby快速刮刀获取维基百科的第一段以获取主题列表(代码片段)
查看详情
javascript网站刮刀(代码片段)
查看详情
javascriptcheerio基本刮刀(代码片段)
查看详情
javascript报告刮刀(代码片段)
查看详情
python链接刮刀(代码片段)
查看详情
text网络刮刀(代码片段)
查看详情
pythonhsnu压光机刮刀(代码片段)
查看详情
pythonbeezid.com-拍卖刮刀(代码片段)
查看详情
markdowncs:go投注刮刀(代码片段)
查看详情
python创建刮刀并使用它们(代码片段)
查看详情
python可笑的简单刮刀(过时)(代码片段)
查看详情
text刮刀php浏览器(代码片段)
查看详情
text谷歌应用程序脚本的刮刀维基代码(代码片段)
查看详情
python简单的pdf表格刮刀的示例python代码(代码片段)
查看详情
javascript完整的完整网站刮板具有更多功能,易于使用的库;非js刮刀(代码片段)
查看详情
我美丽的汤刮刀没有按预期工作(代码片段)
...竟做错了什么?为什么我无法按预期提取列表?我是网络刮刀的初学者。答案您的网络抓取代码正在按预期工作。但是,您的请求无效。如果您检查请求的状态代码,则可以看到您获得4 查看详情
pyecharts“可视化大屏“,带你重温“2020东京奥运会“,不看直播尽知其事!(代码片段)
...人转载,违者必究!目录 1、项目背景 2、奥运会相关信息爬取 ①导入相关库 ②爬虫代码完整讲解 3、数据预处理 ①数据替换 ②数据分组 ③中英文名映射转换 4、可视化展示... 查看详情
pyecharts“可视化大屏“,带你重温“2020东京奥运会“,不看直播尽知其事!(代码片段)
...人转载,违者必究!目录 1、项目背景 2、奥运会相关信息爬取 ①导入相关库 ②爬虫代码完整讲解 3、数据预处理 ①数据替换 ②数据分组 ③中英文名映射转换 4、可视化展示... 查看详情