Πολλές φορές βλέπουμε κάποια στοιχεία - δεδομένα σε μια ιστοσελίδα και θέλουμε να τα χρησιμοποιήσουμε σε κάποια εργασία μας με άλλη μορφή π.χ. κείμενο.
Για να πάρουμε τα συγκεκριμένα δεδομένα χρειαζόμαστε τα modules re και urllib καθώς και να χειριστούμε - να καθαρίσουμε κάποια αλφαριθμητικά.
Στο συγκεκριμένο παράδειγμα παίρνει τα στοιχεία των ΔΟΥ της Ελλάδας από τον ιστότοπο της ΓΓΠΣ.
Ο κώδικας είναι σε Python 3.
EDIT
def remove_chrs(s):
'''
Strips white space and new line characters
from the string.
@author: Konstas Marmatakis
License: GNU/GPL v3.0
Returns String
'''
splited = s.split()
nkey = ''
try:
for i in splited:
nkey = nkey + ' ' + i.strip()
except IndexError:
nkey = splited[0].strip()
return nkey
def listdoy():
'''
Takes the kodes form Tax Offices in the
http://www.gsis.gr web site
@author: Konstas Marmatakis
License: GNU/GPL v3.0
Returns dictionary
'''
import re
import urllib.request
# The pattern
ptrn = r'<div.*>(\d+)</div>.*\s*.*<div.*>([\s*\w+\.?.*\'?\s*]+).*</div>'
# Read the website
f = urllib.request.urlopen('http://www.gsis.gr/ggps/doy/kodikoi_doy.html')
periexomeno = str(f.read().decode('iso-8859-7'))
# Special for the kodikoi_doy.html we remove the <span> tag
periexomeno1 = periexomeno.replace(r"<span style='mso-spacerun:yes'>", '')
periexomeno2 = periexomeno1.replace('</span>', '')
# We extract kodes and Tax offices
# doy is a tuple
doy = re.findall(ptrn, periexomeno2)
doy_key = {}
for num, txt in doy:
doy_key[num] = remove_chrs(txt)
return doy_key
if __name__ == '__main__':
x = listdoy()
for k in sorted(x.keys()):
print(k + " " + x[k])