ruby奥运会刮刀(代码片段)

author author     2023-01-13     679

关键词:

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、可视化展示... 查看详情