Created
April 30, 2014 14:36
-
-
Save emad-elsaid/11428860 to your computer and use it in GitHub Desktop.
Scrap UK top 40 singles chart from BBC
this is small but useful script, it could be used as a plugin for sublimeText, CMS, news website to get the top 40 UK singles from BBC website.
script gets teh printable format of the chart and extract data then form them as array of Hash maps easy to iterate on and filter
the original full chart is here : h…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env ruby | |
| # Author : Emad Elsaid (https://github.com/blazeeboy) | |
| # it turns out that BBC website has a printable version of | |
| # the top 40 UK singles chart, that made me jump of joy :D | |
| require 'open-uri' | |
| # get BBC singles chart printable version | |
| page = open('http://www.bbc.co.uk/radio1/chart/singles/print').read | |
| # result has data as table so we'll extract keys from TH tags | |
| keys = page.scan(/<th>(.+)<\/th>/).map{ |k| k.first.downcase } | |
| # extract cells from TD tags | |
| cells = page.scan(/<td>(.*)<\/td>/).map{ |c| c.first } | |
| # split cells to arrays each equal to keys | |
| rows = cells.each_slice keys.size | |
| # container to join data as Hash objects and push to it | |
| data = [] | |
| # now iterate on each row and join keys with their | |
| # respective values then convert them to arrays | |
| rows.each do |row| | |
| data << Hash[ [keys, row].transpose ] # this is a good trick ;) | |
| end | |
| # show us what you got sir. | |
| puts data |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment