Вже третій місяць користуюся "Домашнім Інтернетом" від "Київстар". Система "Мій Київстар" дає змогу самостійно керувати своїми витратами в режимі онлайн. І звісно ж це вже потрібно автоматизувати. Для цього я буду використовувати наступні інструменти: Ruby, Mechanize, Nokogiri.
# -*- encoding: utf-8 -*-
require 'mechanize'
require 'nokogiri'
login = '0010390***'
password = '***'
agent = Mechanize.new
agent.follow_meta_refresh = true
page = agent.get('https://my.kyivstar.ua/tbmb/login/perform.do')
login_form = page.form_with(:name => 'loginForm')
login_form.user = login
login_form.password = password
show_page = agent.submit(login_form)
if show_page.uri.to_s == "https://my.kyivstar.ua/tbmb/disclaimer/show.do"
puts "Login successful"
else
puts "Login failure"
exit
end
show_page_html = show_page.body.encode('utf-8', 'cp1251')
Розбір HTML таблиці використовуючи XPath:
doc = Nokogiri::HTML(show_page_html)
details = doc.search("//td[@id='mainContentBlock']/table/tr").collect do |row|
title = row.at('td[1]').text.strip rescue ''
data = row.at('td[2]').text.strip.gsub("\n", " ") rescue ''
{
:title => title,
:data => data
}
end
Вивід розпарсеної таблиці і поточного балансу:
pp details
balance = details.find {|e| e[:title] == "Поточний баланс:"}
puts "#{balance[:title]} #{balance[:data]}"
[{:title=>"Прізвище, ім'я, по-батькові:", :data=>"Іван Іванович"},
{:title=>"Номер договору:", :data=>"0010390***"},
{:title=>"Адреса підключення:", :data=>", Україна, Тернопіль"},
{:title=>"Номер мобільного телефону:", :data=>"+38063*******"},
{:title=>"Адреса електронної пошти:", :data=>"ivan.ivanovichlinux@gmail.com"},
{:title=>nil, :data=>"Активуйте Вашу електронну адресу"},
{:title=>nil, :data=>"Надіслати код активації"},
{:title=>nil, :data=>nil},
{:title=>"Особовий рахунок:", :data=>"0010390***"},
{:title=>"Статус особового рахунка:", :data=>"Діючий"},
{:title=>"Поточний баланс:", :data=>"55.09 грн."},
{:title=>"Поріг відключення:", :data=>"0.0 грн."},
{:title=>"Тарифний пакет:", :data=>"Турбо"},
{:title=>"Статус послуги:", :data=>"Підключена"},
{:title=>"Дата підключення:", :data=>"18.12.2010"}]
Поточний баланс: 55.09 грн.
Немає коментарів:
Дописати коментар