﻿#-------------------------------------------------------------------------------
# Name:        mol sivun lataus
# Purpose:
#               ohjelma lataa mol.fi  sivustosta hakutuloksen
#               lukee linkkirivit python listaan
#               järjestää listan viimeisen hakupäivän mukaan
#               ja tallentaa uudelleen järjestetyn listan html sivuna
#
#   02 versio: yritys fiksata merkkikoodaus oikein
#
# Author:      JUkka Y
#
# Created:     22.10.2012
# Copyright:   (c) g09746 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python

# -*- coding: cp1252 -*-

#ladataan modulit
from __future__ import unicode_literals

import os
import re

try:
    from urllib.request import urlopen # Python 3
except ImportError:
    from urllib2 import urlopen # Python 2

# tallennettava tiedostonimi:
htmltiedostonimi="molilmot4f.html"

#ladattava url:
urli="http://www.mol.fi/paikat/BrowseList.do?pageIndex=0&AreaB1=0&AreaB1=00&AreaB1=01&AreaB1=02&AreaB1=03&AreaB1=04&AreaB1=05&AreaB1=06&AreaB1=07&AreaB1=08&AreaB1=09&searchExecute=true&search=Etsi&professionCode=00&professionCode=03&professionCode=06&professionCode=07&professionCode=08&professionCode=09&lang=fi&type=21&rentalLabour=---&province=---&searchphrase=&freshness=1&country=---&municipalities=helsinki&duration=11#resultList"

# työkansio, johon tallennetaan:
##kansio = 'E:\metropolia_python_kurssi\paiva01'
kansio = 'F:\metropolia_python_kurssi\paiva01'

os.chdir(kansio)
os.getcwd()

print("lataa urlia: " + urli)
webpage = urlopen(urli).read()

##type(webpage)
##webpage=webpage.decode('unicode-escape')
##webpage[0:200] #testailua
##type(webpage) #testailua
##webpage[5:10]
##len(webpage)
##
### haetaan kohta, jossa merkkijono "<a name"
##alkuindex=webpage.index("<a name")
##alkuindex
##
##webpage[alkuindex:alkuindex+100]
##
### haetaan uudelleen edellisen kohdasta eteenpäin
##seOikeaAlkuindex=webpage.index("<a name", alkuindex+1)
##seOikeaAlkuindex
##
###testataan miltä näyttää:
##webpage[seOikeaAlkuindex:seOikeaAlkuindex+100]
##
##
### haetaan linkin loppukohta
##linkinLoppuindex=webpage.index("<br>", seOikeaAlkuindex)
##
###testataan osuiko:
##webpage[seOikeaAlkuindex:linkinLoppuindex+4]
##
##
### while silmukka versio
##tyopaikkaIlmoLinkit = []
##
##alkuindex=webpage.index("<a name")
##alkuindex
##
##laskuri = 0
##while   webpage.count("<a name", alkuindex ) > 1:
##    print (laskuri)
##    laskuri += 1
##    print webpage.count("<a name",alkuindex )
##    alkuindex=webpage.index("<a name", alkuindex+1)
##    linkinLoppuindex=webpage.index("<br>", alkuindex+1)
##    tyopaikkalinkkiRivikoodi=webpage[alkuindex:linkinLoppuindex+4]
##    tyopaikkaIlmoLinkit.append(tyopaikkalinkkiRivikoodi)
##
##
### testailua:
##tyopaikkaIlmoLinkit[0]
##tyopaikkaIlmoLinkit[1]
##tyopaikkaIlmoLinkit[2]
##
##len(tyopaikkaIlmoLinkit)
##
##tyopaikkaIlmoLinkit[-1]
##
##tyopaikkaIlmoLinkit[0]
##
##
##
### for silmukka versio
##
##webpage.count("<a name" )

webpage=webpage.decode('unicode-escape')

print("etsitään linkkirivit..")

alkuindex = 0
tyopaikkaIlmoLinkit = []
for i in range(webpage.count("<a name" )):
    #print i
    #print webpage.count("<a name",alkuindex )
    alkuindex=webpage.index("<a name", alkuindex+1)
    linkinLoppuindex=webpage.index("<br>", alkuindex+1)
    tyopaikkalinkkiRivikoodi=webpage[alkuindex:linkinLoppuindex+4]
    tyopaikkaIlmoLinkit.append(tyopaikkalinkkiRivikoodi)


# poistetaan eka turha
tyopaikkaIlmoLinkit.pop(0)
##
### testailua:
##len(tyopaikkaIlmoLinkit)
##
##tyopaikkaIlmoLinkit[0]
##tyopaikkaIlmoLinkit[-1]
##
##linkkiKoodi=tyopaikkaIlmoLinkit[0]
##
##linkkiKoodi
##
##
##loydot=re.findall('">(.*?)</a>', linkkiKoodi )
##type(loydot[1])
##
##type(re.findall('">(.*?)</a>', linkkiKoodi )[1])
##
##
##loydot
##
##tyopaikkaIlmoLinkit[0:3]
##
##
##[1,2,3,4][0]
##lista2=[1,2,3,4]
##lista2[0]
##
##for linkkiKoodi in tyopaikkaIlmoLinkit:
##    loydot = re.findall('">(.*?)</a>', linkkiKoodi )
##    print loydot[1]
##
###tulosta kaikki työpaikka nimikkeet ja hakupäivät
##for linkkiKoodi in tyopaikkaIlmoLinkit:
##    tyopaikkanimike = re.findall('">(.*?)</a>', linkkiKoodi )[1]
##    print tyopaikkanimike
##    hakupaiva = re.findall('Haku p&auml;&auml;ttyy:&nbsp;(.*?),&nbsp', linkkiKoodi )
##    if len(hakupaiva) > 0:
##        print hakupaiva[0]
##    else:
##        print "ei hakupäivää"
##
##
##tyopaikkaIlmoLinkit[0]
##len(tyopaikkaIlmoLinkit)

print("haetaan päivämäärät")

tyopaikkaIlmoLinkit_jaPaivamaarat= []

for linkkiKoodi in tyopaikkaIlmoLinkit:
    hakupaiva = re.findall('Haku p&auml;&auml;ttyy:&nbsp;(.*?),&nbsp', linkkiKoodi )
    if len(hakupaiva) > 0:
        #print hakupaiva[0]
        tyopaikkaIlmoLinkit_jaPaivamaarat.append([hakupaiva[0],linkkiKoodi])
    else:
        #print "ei hakupäivää"
        tyopaikkaIlmoLinkit_jaPaivamaarat.append([0,linkkiKoodi])


##
##len(tyopaikkaIlmoLinkit_jaPaivamaarat)
##
##
##tyopaikkaIlmoLinkit_jaPaivamaarat[0][0]
##tyopaikkaIlmoLinkit_jaPaivamaarat[0][1]
##
##
##tyopaikkaIlmoLinkit_jaPaivamaarat.sort()
##
##tyopaikkaIlmoLinkit_jaPaivamaarat[0][1]
##tyopaikkaIlmoLinkit_jaPaivamaarat[0][0]
##
##tyopaikkaIlmoLinkit_jaPaivamaarat[86]
##
##testipm=tyopaikkaIlmoLinkit_jaPaivamaarat[16][0]
##
##testipm
##pmlista=testipm.split(".")
##pmlista.reverse()
##
##int("".join(pmlista))
##
##
##tyopaikkaIlmoLinkit_jaPaivamaarat[0]
##
##
##type(tyopaikkaIlmoLinkit_jaPaivamaarat[16][0])
##
##type('merkkijono')

STRINGTYYPPI = type('merkkijono')


##STRINGTYYPPI == type(linkkiKoodiPlusPm[0])

for linkkiKoodiPlusPm in tyopaikkaIlmoLinkit_jaPaivamaarat:
    #print linkkiKoodiPlusPm[0]
    #print type(linkkiKoodiPlusPm[0])

    if STRINGTYYPPI == type(linkkiKoodiPlusPm[0]):
        pmlista=linkkiKoodiPlusPm[0].split(".")
        pmlista.reverse()
        linkkiKoodiPlusPm[0] = int("".join(pmlista))

##
##
##tyopaikkaIlmoLinkit_jaPaivamaarat[17]
##
##tyopaikkaIlmoLinkit_jaPaivamaarat[0]

# linkit järjestykseen:
print("järjestetään uudelleen")
tyopaikkaIlmoLinkit_jaPaivamaarat.sort()


##
##len(tyopaikkaIlmoLinkit_jaPaivamaarat)
##tyopaikkaIlmoLinkit_jaPaivamaarat[0]
##

# poistetaan listasta erilliset päivämäärät

tyopaikkaIlmoLinkit_jarjestetty = []

for linkkiKoodiPlusPm in tyopaikkaIlmoLinkit_jaPaivamaarat:
    tyopaikkaIlmoLinkit_jarjestetty.append(linkkiKoodiPlusPm[1])




urlinalku = "http://www.mol.fi/paikat/"
##
##for linkkiKoodi in tyopaikkaIlmoLinkit_jarjestetty:
##    print linkkiKoodi[0:60]
##    linkkiKoodi=linkkiKoodi.replace('href="Job.do', 'href="' + urlinalku +'Job.do')

# korjataan linkki

for i in range(0,len(tyopaikkaIlmoLinkit_jarjestetty)):
    #print i
    linkkiKoodi=tyopaikkaIlmoLinkit_jarjestetty[i]
    tyopaikkaIlmoLinkit_jarjestetty[i]=linkkiKoodi.replace('href="Job.do', 'href="' + urlinalku +'Job.do')
##    print linkkiKoodi[0:60]
##
##
##
##    print linkkiKoodi[0:30]

##
##
##tyopaikkaIlmoLinkit_jarjestetty[0]
##
##
##
##
##
##tyopaikkaIlmoLinkit_jarjestetty[0]

tplinkitstr1="\n".join(tyopaikkaIlmoLinkit_jarjestetty)
##
##
##tplinkitstr[151:180]
##
##tplinkitstr
##
##tplinkitstr1=repr(tplinkitstr.decode('unicode-escape'))
##
##
##tplinkitstr[200:230]
##
##
##type(tplinkitstr)


htmlalku='''<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>

<body>'''

htmlloppu='''
</body>
</html>'''

##type("s")
##unicode(tplinkitstr)[0:100]

kokosivu = htmlalku +  tplinkitstr1 + htmlloppu

##type(kokosivu)

##kokosivu2=kokosivu.decode('unicode-escape')

##print tplinkitstr1.decode('unicode-escape')[150:180]

print("tallennetaan html tiedosto: " + htmltiedostonimi)

# tallennus:
f = open(htmltiedostonimi, "w" )
f.write(kokosivu.encode('UTF-8') )
f.close()



