Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Sep 20th, 2012  |  syntax: None  |  size: 3.46 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import urllib
  2. import urllib2
  3. from bs4 import BeautifulSoup
  4. import re
  5. import time
  6.  
  7. # expressao regular pra remover a sujeira do campo da linha de onibus
  8. linha_r = re.compile('[\t\n\r\-\|]+')
  9.  
  10. url = "http://www.pmf.sc.gov.br/servicos/index.php?pagina=onibus"
  11.  
  12. f = urllib2.urlopen(url)
  13. doc = BeautifulSoup(f.read())
  14. # print doc
  15. EMPRESAS = {}
  16. for e in doc.select('select[name="empresa"] > option'):
  17.         if e.has_key("title"):
  18.                 nome = (e["title"].strip().encode("utf-8"), int(e["value"]))
  19.                 EMPRESAS[nome] = {}
  20.  
  21. def isTimeFormat(input):
  22.         try:
  23.                 time.strptime(input, '%H:%M')
  24.                 return True
  25.         except ValueError:
  26.                 return False
  27.  
  28. def busca_linhas(id,LINHAS):
  29.         data = {
  30.                         "empresa":id,
  31.                         "opcao":1,
  32.                         "passoGeral":1,
  33.                         "passoEmpresa":1,
  34.                         }
  35.         req = urllib2.Request(url, urllib.urlencode(data))
  36.         doc = BeautifulSoup(urllib2.urlopen(req).read())
  37.         for linha in doc.select('ul[class="listagem"] > li'):
  38.                 linha_data = linha_r.split(linha.contents[0].strip().encode("utf-8"))
  39.                 linha_numero = linha_data[0].strip()
  40.                 linha_nome = linha_data[1].strip()
  41.                 linha_url = "http://www.pmf.sc.gov.br/servicos/index.php?pagina=onibuslinha&idLinha="+linha_numero+"&menu=2"
  42.                 itinerario = busca_dados_linha_itinerario(linha_url)
  43.                 horaida = busca_dados_linha_horaida(linha_url)
  44.                 horavolta = busca_dados_linha_horavolta(linha_url)
  45.                 LINHAS[linha_nome] = {"nome":linha_nome,'empresa':empresa,'numero':linha_numero,"itinerario":itinerario,"horarios_ida":horaida,"horarios_volta":horavolta}
  46.                 print '---------------------------------//-------//---->'
  47.                 print LINHAS[linha_nome]
  48.  
  49. # Passo Geral (3=Itinerarios) (2=Volta) (1=Ida)
  50.  
  51. def busca_dados_linha_itinerario(url):
  52.         # print url
  53.         data = {"passoGeral":3}
  54.         req = urllib2.Request(url, urllib.urlencode(data))
  55.         doc = BeautifulSoup(urllib2.urlopen(req).read())
  56.         itinerario = []
  57.         for caminho in doc.select('ul[class="listagem"] > li'):
  58.                 itinerario.append(caminho.contents[0].strip().encode('utf-8')[3:])
  59.         return itinerario
  60.  
  61. def busca_dados_linha_horaida(url):
  62.         # print url
  63.         data = {"passoGeral":1}
  64.         req = urllib2.Request(url, urllib.urlencode(data))
  65.         doc = BeautifulSoup(urllib2.urlopen(req).read())
  66.         horarios = {"dias_uteis":[], "sabado":[], "domingo":[]}
  67.         for horario in doc.select('td[valign="top"]')[1].contents[::2]:
  68.                 if isTimeFormat(horario.strip()[:4]) is True:   horarios["dias_uteis"].append(horario.strip())
  69.         for horario in doc.select('td[valign="top"]')[2].contents[::2]:
  70.                 if isTimeFormat(horario.strip()[:4]) is True:   horarios["sabado"].append(horario.strip())
  71.         for horario in doc.select('td[valign="top"]')[3].contents[::2]:
  72.                 if isTimeFormat(horario.strip()[:4]) is True:   horarios["domingo"].append(horario.strip())
  73.         return horarios
  74.  
  75. def busca_dados_linha_horavolta(url):
  76.         # print url
  77.         data = {"passoGeral":2}
  78.         req = urllib2.Request(url, urllib.urlencode(data))
  79.         doc = BeautifulSoup(urllib2.urlopen(req).read())
  80.         horarios = {"dias_uteis":[], "sabado":[], "domingo":[]}
  81.         for horario in doc.select('td[valign="top"]')[1].contents[::2]:
  82.                 if isTimeFormat(horario.strip()[:4]) is True:   horarios["dias_uteis"].append(horario.strip())
  83.         for horario in doc.select('td[valign="top"]')[2].contents[::2]:
  84.                 if isTimeFormat(horario.strip()[:4]) is True:   horarios["sabado"].append(horario.strip())
  85.         for horario in doc.select('td[valign="top"]')[3].contents[::2]:
  86.                 if isTimeFormat(horario.strip()[:4]) is True:   horarios["domingo"].append(horario.strip())
  87.         return horarios
  88.  
  89. LINHAS = {}
  90. for empresa,id in EMPRESAS:
  91.         # print empresa
  92.         busca_linhas(id,LINHAS)
  93.         # print urllib.urlencode({"empresa",
  94. print EMPRESAS
  95. print LINHAS