Skip to content

Instantly share code, notes, and snippets.

@fractalatcarf
Last active April 6, 2017 16:07
Show Gist options
  • Save fractalatcarf/607851a441d2b5744390e6284c09e321 to your computer and use it in GitHub Desktop.
Save fractalatcarf/607851a441d2b5744390e6284c09e321 to your computer and use it in GitHub Desktop.

installation de la gem 'watir'

gem install watir

téléchargement du driver chrome

télécharge le driver chrome (c’est le browser, mais executable en ligne de commande). Pour faire ça, va ici : https://chromedriver.storage.googleapis.com/2.25/chromedriver_mac64.zip

Dézipe et déplace le fichier “chromedriver” dans le répertoire /usr/local/bin avec la commande suivante : mv Downloads/chromedriver /usr/local/bin/

execute le fichier ruby suivant (remplacer les infos du comptes dans le script) :

ruby scrap_faustin.rb

{
"workouts"=>{
"aphrodite"=>{
"Série 1"=>["50 Burpees", "50 Squats", "50 Situps"],
"Série 2"=>["40 Burpees", "40 Squats", "40 Situps"],
"Série 3"=>["30 Burpees", "30 Squats", "30 Situps"],
"Série 4"=>["20 Burpees", "20 Squats", "20 Situps"],
"Série 5"=>["10 Burpees", "10 Squats", "10 Situps"]
},
"dione"=>{
"Série 1"=>["50 Burpees", "50 Squats", "50 Situps"],
"Série 2"=>["40 Burpees", "40 Squats", "40 Situps"],
"Série 3"=>["30 Burpees", "30 Squats", "30 Situps"],
"Série 4"=>["20 Burpees", "20 Squats", "20 Situps"],
"Série 5"=>["10 Burpees", "10 Squats", "10 Situps"]
}
},
"exercices"=>{
"burpees"=>{
"Série 1"=>["10 Burpees"]
}
}
}
require 'nokogiri'
require 'watir'
# require 'watir-scroll'
require 'pry-byebug'
def explore(browser, name, item, result)
# init result
result[name] = {} unless result.has_key?(name)
result[name][item[:name]] = {}
# browse series
browser.goto item[:url]
doc = Nokogiri::HTML.parse(browser.html)
doc.search('.workout_detail-table-repetitions').each do |element|
# round
round = element.search('.workout_detail-table-round').text
series = []
# combien
element.search('.big_and_bold').each do |how_many|
series << how_many.text
end
index = 0
# quoi
element.search('.workout_detail-table-exercise').each do |what|
series[index] += " #{what.text}"
index += 1
end
result[name][item[:name]][round] = series
end
end
# login
browser = Watir::Browser.new
browser.goto 'https://www.freeletics.com/fr/login'
browser.text_field(:placeholder => 'Adresse e-mail').set 'vincent.damien@gmail.com'
browser.text_field(:placeholder => 'Mot de passe').set 'presidentielles2017'
submit = browser.button(:text =>"Se connecter").click
sleep(5)
workouts = [
{
name: "aphrodite",
url: "https://www.freeletics.com/fr/bodyweight/workouts/aphrodite"
},
{
name: "dione",
url: "https://www.freeletics.com/fr/bodyweight/workouts/aphrodite"
}
]
exercices = [
{
name: "burpees",
url: "https://www.freeletics.com/fr/bodyweight/exercises/burpees"
}
]
result = {}
workouts.each do |item|
explore(browser, "workouts", item, result)
end
exercices.each do |item|
explore(browser, "exercices", item, result)
end
puts result
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment