Mano sesuo nusprendė pirkti telefoną iš tele2, už 1 lt. Paprašė manęs pagalbos surasti geriausią.
Atsidaręs tele2 svetainę neradau jokio normalaus palyginimo pagal kainas, todėl į pagalbą pasitelkiau python. Pasirašiau tokį scriptuką:
-
#!/bin/env python
-
# -*- encoding: utf-8 -*-
-
-
import re, os.path
-
from urllib import urlopen, quote
-
-
phones = {
-
'Sony Ericsson':
-
['K310i', 'K530i (3G)', 'K550i', 'K600i', 'K800i (3G)', 'P1i (3G)',
-
'S500i', 'T250i', 'T650i (3G)', 'W200i', 'W580i', 'W880i (3G)',
-
'W950i', 'Z310i', 'Z530i', 'Z610i (3G)'],
-
-
'Nokia':
-
['2610', '3109 classic', '3110 Classic', '5070', '5200', '5300',
-
'6020', '6030', '6060', '6070', '6080', '6085', '6103', '6110 Navigator',
-
'6111', '6120 classic (3G)', '6125', '6131', '6151 (3G)', '6230i',
-
'6233 (3G)', '6267 (3G)', '6288 (3G)', '6290 (3G)', '6300', '6500',
-
'7360', '7373', '7390 (3G)', '7500 Prism', '8600 Luna', 'E50 (FOTO)',
-
'E61 (3G)', 'E65 (3G)', 'E70 (3G)', 'N70 (3G)', 'N73 (3G)', 'N80 (3G)',
-
'N90-1 (3G)', 'N95 (3G)'],
-
-
'Motorola':
-
['K1', 'L6', 'U6', 'V3', 'W375'],
-
-
'Samsung':
-
['SGH-C300', 'SGH-D830', 'SGH-E210', 'SGH-E250', 'SGH-E390',
-
'SGH-E740', 'SGH-E900', 'SGH-G600', 'SGH-U300', 'SGH-U700 (3G)',
-
'SGH-X500', 'SGH-X510', 'SGH-X520', 'SGH-Z150(3G)', 'SGH-Z230 (3G)',
-
'SGH-Z400 (3G)'],
-
-
'LG':
-
['KE500', 'KE800 Chocolate', 'KE970 Shine', 'KG245', 'KG800', 'KP200'],
-
}
-
-
pattern = re.compile(r'<tr><td class="price_type">Privatiems klientams</td>' \
-
'<td class="price_value" align="center">(\d+) Lt' \
-
'<td class="price_value" align="center">(\d+) Lt' \
-
'<td class="price_value" align="center">(\d+) Lt')
-
-
cnt = 0
-
for phone, models in phones.iteritems():
-
for model in models:
-
filename = "phone__%s--%s.html" % (quote(phone), quote(model))
-
if os.path.exists(filename):
-
data = file(filename).read()
-
else:
-
url = 'http://www.tele2.lt/cps/rde/xchg/tele2_lt/hs.xsl' \
-
'/367_LTH_HTML.html/papp/handsets_lt/' \
-
'http://handsets.tele2.lt/handsets.phtml?' \
-
'manuf=%s&model=%s' % (quote(phone), quote(model))
-
data = urlopen(url).read()
-
file(filename, 'w').write(data)
-
-
results = pattern.search(data)
-
if results:
-
price1, price2, price3 = results.groups()
-
if int(price1) <= 50 or int(price2) <= 50 or int(price3) <= 50:
-
print "%-15s %-18s %5s Lt, %5s Lt, %5s Lt. file:///tmp/%s" \
-
% (phone, model, price1, price2, price3, filename)
-
cnt += 1
-
-
print "\nViso rasta telefonų: %d" % cnt
Tai gi šio nedidelio scripto pagalba turėjau visas telefonų kainas vienoje vietoje ir galėjau lengvai išsirinkti norimą telefoną.
Šiuo scriptu galite pasinaudoti ir jūs. Tereikia turėti įdiegtą python'ą, tada susikurti failą, kurio turinys būtų toks koks pateiktas višuje ir paleisti tą naujai sukurtą failą su python. Paleisti reikėtu iš komandinės eilutės, nes būtent joje bus atvaizduotas rezultatas.
Komentarai
:D genialu... nors siaip tai
:D genialu... nors siaip tai greiciau turbut butu buve suvest i koki Excely ar pan softa ir ten matyti... ;)
Su exceliu būtų buvę
Su exceliu būtų buvę daugiau darbo. Be to retai kur pas programuotojus būna python ir win. Šiaip tikrai elegantiškas sprendimas .) Nori nusiųsti tele2 webmasteriui šitą skriptą? .)
File "./tele2.sh", line
File "./tele2.sh", line 59
% (phone, model, price1, price2, price3, filename)
^
SyntaxError: invalid syntax
Keistai. Kokią python
Keistai. Kokią python versiją naudoji?
Gal būt pas tave šią eilutę reikėtu sujungti su aukščiau esančia?
Taip, tikrai buvo klaida.
Taip, tikrai buvo klaida. Ačiū už pastebėjimą, pataisiau.
Dirb dabar ;) Šeip yra
Dirb dabar ;)
Šeip yra paprastesnis būdas - brūkštelt e-mail į tele2, paprašyt kad mesteltų sąrašiuką excel formate, nebandžiau tele2 to prašyt bet Bitė be problemų atsiuntė.
Aišku python būdas linksmesnis :)
Linksmų švenčių
Neturiu ka veikti tai
Neturiu ka veikti tai parasiau savo versija:
http://www.paste.lt/paste/abbeec5994582835fd439e03696d17ed
gal kiek trumpesne :P
bet esme manau tu pati ;)
tik ziuriu mano versija su
tik ziuriu mano versija su bug'ais ..
1) nevisur toks pat formatavimas .. ten kur surasytos kainos ..
2) kazkodel neveikia kaip turetu veikti ..
Net Meskafono kaina neteisingai parase..
vnz .. einu ka nors geresnio nuveiksiu ;)))
Man rodos geriause butu
Man rodos geriause butu pirkti ne uz 1 Lita o prideti kelis shimtus Lt. ir pasiimti padoresni koki :)
File "tele.py", line 8
File "tele.py", line 8
import re, os.path
^
IndentationError: unexpected indent
ps, python 2.6.5
Skelbti naują komentarą