def varrerImoveis():
	for categoria in categorias:
		url_base = "https://www.megaleiloes.com.br/imoveis/"+categoria+"?pagina="
		proximo = True
		numeroAtual  = 1
		while(proximo):
			# carregando a pagina no requests.get
			print(url_base+str(numeroAtual))
			paginaInicial = pegarconteudo(url_base+str(numeroAtual))
			soup = BeautifulSoup(paginaInicial[0], "lxml")
			# se não teve erro 404 prosseguir
			if paginaInicial[1] != '404':		
				finaldaspaginas = soup.find("li", class_="next disabled")		
				if finaldaspaginas == None:
					numeroAtual = numeroAtual + 1
					miniaturas = soup.find("ul", class_="thumbnails").find_all("li", class_="item-row")
					#TESTAR FOR
					for miniatura in miniaturas:
						linkdoImovel = miniatura.find("a", class_="card-image")['href'].replace('//','/').replace(':/','://')					
						dadosImovel = obterDados(linkdoImovel)
						inserirNoBanco(dadosImovel)
				else:
					proximo=False
Exemplo n.º 2
0
# começando, pegando a página principal de imóveis (somente com filtro de imoveis) e colocando ela em uma lista na
# primeira posição

paginas = ["https://www.megaleiloes.com.br/imoveis?type=1"]

# criando um set para popular com as URLs individuais de cada imóvel

linksdosImoveis = set()

# vamos ciclar pela lista pagina que sera incrementada com novas paginas a medida que o bsoup for achando mais links
# com "próxima pagina", quando ele não encontrar mais novas páginas ele vai breakar e já vamos ter coletado todos os links
# de todos os imóveis

for pagina in paginas:

    paginaInicial = pegarconteudo(pagina)

    soup = BeautifulSoup(paginaInicial, "lxml")

    finaldaspaginas = soup.find("li", class_="next disabled")

    miniaturas = soup.find_all("li", class_="item-row card success span3 ")

    for miniatura in miniaturas:
        linkdoImovel = miniatura.find("a", class_="card-image")
        linksdosImoveis.add(linkdoImovel['href'])

    proximaPagina = soup.find("li", class_="next").find("a")

    proximaPagina = "https://www.megaleiloes.com.br" + proximaPagina["href"]
# criando um set para codigos que já foram scrapeados

codigosScrapeados = set()

# vamos ciclar pela lista pagina que sera incrementada com novas paginas a medida que o bsoup for achando mais links
# com "próxima pagina", quando ele não encontrar mais novas páginas ele vai breakar e já vamos ter coletado todos os links
# de todos os imóveis

contador_erro_404 = 0

for pagina in paginas:

    # carregando a pagina no requests.get

    paginaInicial = pegarconteudo(pagina)

    # se não teve erro 404 prosseguir

    if paginaInicial[1] != '404':

        # carregando a pagina no soup

        soup = BeautifulSoup(paginaInicial[0], "lxml")

        # tentando encontrar a tag que vai me indicar que chegou na ultima pagina de listagem de imoveis

        finaldaspaginas = soup.find("li", class_="next disabled")

        # buscando com o soup todos os links dos imoveis em cada pagina de listagem de imoveis
# começando, pegando a página principal de imóveis (somente com filtro de imoveis) e colocando ela em uma lista na
# primeira posição

paginas = ["https://www.megaleiloes.com.br/imoveis?type=1"]

# criando um set para popular com as URLs individuais de cada imóvel

linksdosImoveis = set()

# vamos ciclar pela lista pagina que sera incrementada com novas paginas a medida que o bsoup for achando mais links
# com "próxima pagina", quando ele não encontrar mais novas páginas ele vai breakar e já vamos ter coletado todos os links
# de todos os imóveis

for pagina in paginas:

    paginaInicial = pegarconteudo(pagina)

    soup = BeautifulSoup(paginaInicial, "lxml")

    finaldaspaginas = soup.find("li", class_="next disabled")

    miniaturas = soup.find_all("li", class_="item-row card success span3 ")

    for miniatura in miniaturas:
        linkdoImovel = miniatura.find("a", class_="card-image")
        linksdosImoveis.add(linkdoImovel['href'])

    proximaPagina = soup.find("li", class_="next").find("a")

    proximaPagina = "https://www.megaleiloes.com.br" + proximaPagina["href"]
def obterDados(paginadeimovel):
	requestsPaginadoImovel = pegarconteudo(paginadeimovel)
	# carregando o requests.get da pagina do imovel no bsoup
	soup = BeautifulSoup(requestsPaginadoImovel[0], "lxml")
	retorno = {}
	retorno['codigoImovel'] = paginadeimovel.split("-")[-1]
	print(retorno['codigoImovel'])

	retorno['status_code'] = int(requestsPaginadoImovel[1])	
	retorno['varaImovel'] = "N/D"
	retorno['forumImovel'] = "N/D" 
	retorno['numprocessoImovel'] = "N/D"
	retorno['linkprocessoImovel'] = "N/D"
	retorno['controlenumImovel'] = "N/D"
	retorno['autorImovel'] = "N/D"      
	retorno['reuImovel'] = "N/D"       
	retorno['comitenteImovel'] = "N/D" 
	retorno['valoravaliavaoImovel'] = "N/D"    
	retorno['valoravaliavaoImovel'] = "N/D"
	retorno['matriculaImovelPDF'] = "N/D"
	retorno['laudoImovelPDF'] = "N/D"
	retorno['editalImovelPDF'] = "N/D"

	if retorno['status_code'] != 404:
		retorno['partecomLotes'] = soup.find("div", id="batches-list")		
		retorno['tituloImovel'] = soup.find("h1", class_="page-header").text.strip()
		try:
		    retorno['statusImovel'] = soup.find("div", class_="span5").find("div").find("span").text
		except:
		    pass
		retorno['pracaImovel'] = soup.find("div", class_="span5").find("div").find("div", class_="pull-right").text
		retorno['tipoImovel'] = soup.find("ul", class_="description").find("li").find("strong").text
		retorno['leilaoImovel'] = soup.find("ul", class_="description").find_all("li")[1].text[8:]
		retorno['lanceinicialImovel'] = soup.find("ul", class_="description").find_all("li")[2].text[15:]
		retorno['ultimolanceImovel'] = soup.find("ul", class_="description").find_all("li")[3].text[14:]
		retorno['incrementoImovel'] = soup.find("ul", class_="description").find_all("li")[4].text[12:]
		retorno['localizacaoImovel'] = soup.find("ul", class_="description").find_all("li")[5].text[13:]
		retorno['inicioImovel'] = soup.find("ul", class_="description").find_all("li")[6].text[8:]
		retorno['terminoImovel'] = soup.find("ul", class_="description").find_all("li")[7].text[9:]
		retorno['enderecoImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[0].find("td").text
		retorno['descricaoImovel'] = soup.find("div", id="batch-description").text.strip()
		try:
		    retorno['editalImovelPDF'] = soup.find("div", id="buttons").find_all("a")[2]["href"]
		    retorno['nomedoarquivoEditalPDF'] = retorno['editalImovelPDF'].split("/")[6]
		except:
		    pass
		try:
		    retorno['laudoImovelPDF'] = soup.find("div", id="buttons").find_all("a")[3]["href"]
		    retorno['nomedoarquivoLaudoPDF'] = retorno['laudoImovelPDF'].split("/")[6]
		except:
		    pass
		try:
		    retorno['matriculaImovelPDF'] = soup.find("div", id="buttons").find_all("a")[4]["href"]
		    retorno['nomedoarquivoMatriculaPDF'] = retorno['matriculaImovelPDF'].split("/")[6]
		except:
		    pass
		retorno['contratoImovel'] = soup.find("textarea", id="contract").text

		retorno['localimagemImovel'] = soup.find("div", class_="span7").find("div", class_="carousel slide")

		retorno['forumImovel'] = "N/D"
		retorno['varaImovel'] = "ND"
		retorno['orumImovel'] = "ND"
		retorno['varaImovel'] = "ND"
		retorno['numprocessoImovel'] = "ND"
		retorno['controlenumImovel'] = "ND"
		retorno['linkprocessoImovel'] = "ND"
		retorno['autorImovel'] = "ND"
		retorno['reuImovel'] = "ND"
		retorno['valoravaliavaoImovel'] = "ND"


		if retorno['tipoImovel'] == "Leilão Judicial":
		    retorno['forumImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[2].find("td").text
		    retorno['varaImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[1].find("td").text
		    retorno['numprocessoImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[3].find("td").find("a").text
		    retorno['controlenumImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[3].find("td").text[-8:]
		    retorno['linkprocessoImovel'] = soup.find("div", class_="span9").find("a")["href"]
		    retorno['autorImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[4].find("td").text
		    retorno['reuImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[5].find("td").text
		    retorno['valoravaliavaoImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[7].text.split("}")[1].split("A descr")[0].split("o:")[1].strip()

		retorno['comitenteImovel'] = "N/D"           

		if retorno['tipoImovel'] == "Leilão Extrajudicial":
		    retorno['comitenteImovel'] = soup.find("div", class_="span9").find_all("tr")[1].find("td").text
		    try:
		        retorno['valoravaliavaoImovel'] = soup.find("table", class_="table table-nomargin").find_all("tr")[3].text.split("}")[1].split("A descr")[0].split("o:")[1].strip()
		    except: 
		        pass

	return retorno