Skip to content

Instantly share code, notes, and snippets.

@mbarrerar
Created July 7, 2015 17:46
Show Gist options
  • Save mbarrerar/e5047c2e4642bf3b9415 to your computer and use it in GitHub Desktop.
Save mbarrerar/e5047c2e4642bf3b9415 to your computer and use it in GitHub Desktop.
Extrae información de la web de administración de cursos elearning del SENCE ya que no permite exportar los datos y los muestra paginados. ( lo deja en formato csv)
import requests
import bs4
import unicodecsv
import re
s = requests.Session()
payload = {'Rut': 'XX.XXX.XXX-X', 'Clave': 'XXXXX','IDPERFIL': 2, 'ButtonClick': 'Ingresar','Pagina': 1,'OrdenadoPor': 1,'EsAscendente': 'True'}
paginas = s.post('http://aplicaciones.sence.cl/DeclaracionJurada/Identificacion', data=payload)
cookies = s.cookies
with open('ruts.csv', 'a') as csvfile:
writer = unicodecsv.writer(csvfile,delimiter=';', quotechar=' ')
for x in range(1, 1309):
payload2 = {'RUN': 'XX.XXX.XXX-X','MSGError':'','MSGInfo':'','MSGAdv':'','MSGExito':'','IDACCION':'','OPCIONBUSQUEDA': 1,'CODIGOSENCE':'','FECHAINICIO':'','ButtonClick':'EstadoVista','OPCIONBUSQUEDA':1,'Pagina': x,'OrdenadoPor': 2,'EsAscendente': 'True'}
listado = s.post('http://aplicaciones.sence.cl/DeclaracionJurada/MuestreoCursos/OTEC', cookies=cookies,data=payload2)
soup = bs4.BeautifulSoup(listado.text,'html.parser')
soup.prettify()
table = soup.find_all('table', attrs={'style':'width:100%'})
row = table[1].find_all("tr")
row.pop(0)
for datos in row:
tds = datos.find_all('td',attrs={'align':'center'})
code = tds[0].find(text=True)
rut = tds[1].find(text=True)
h = tds[4].find(text=True)
d = tds[3].find('img', src=True).get('src').split('%2F')[1]
percent = tds[5].find(text=True)
c = tds[6].find(text=True)
writer.writerow([str(re.sub(r'\s+', '', code)),str(re.sub(r'\s+', '', rut)),d,str(re.sub(r'\s+', '', h)),str(re.sub(r'\s+', '', percent)),str(re.sub(r'\s+', '', c))])
print str(re.sub(r'\s+', '', rut))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment