def descargarCategorias(): LETRAS = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ] for letra in LETRAS: indice = 1 nuevos = 1 while (nuevos > 0): nuevos = 0 pagina = descargarResultado( 'http://www.paginasamarillas.com.co/listado-de-secciones/' + letra + '/' + str(indice), 360, 10) if (pagina): pagina = pagina.find_all(class_='companyList')[0].find_all('a') indice = indice + 1 for aa in pagina: categoryLinks.append(aa['href']) nuevos = nuevos + 1 saveFile('categoryLinks.txt', categoryLinks) return
def descargarCategoriaEspecifica(): pag = 1 cant = 1 while (cant > 0): cant = 0 payload = "lang=E&pagina=" + str(pag) + "&arqSOC=arq" headers = {'content-type': "application/x-www-form-urlencoded"} pagina = descargarResultadoData( 'https://www.arquitectes.cat/iframes/arquitectes/arquitectes/llistat.php', 360, 10, payload, headers) pagina = pagina.find_all(class_='item_list') for link in pagina: cant = cant + 1 lista.append( link.prettify().strip().split("codi=")[1].split("&")[0]) print(pag) pag = pag + 1 saveFile('resultadosIndiv.csv', lista) return
def descargarCategorias(codigo): payload = "lang=E&codi=" + codigo headers = {'content-type': "application/x-www-form-urlencoded"} pagina = descargarResultadoData( 'https://www.arquitectes.cat/iframes/arquitectes/arquitectes/fitxa.php?codi=' + codigo + '&lang=E', 360, 10, payload, headers) pagina = pagina.find_all(class_='result-item') pagina = pagina[0].prettify() # print(pagina) try: name = pagina.split("profile-name\">")[1].split("</h3>")[0].strip() except: name = '' try: matri = pagina.split("<span>")[1].split("</span>")[0].strip() except: matri = '' try: dire = pagina.split(">-->")[1].split("</span>")[0].replace( ";", ",").strip() except: dire = '' try: tel = pagina.split("Tel")[1].split("</span>")[0].split( "<span>")[1].strip() except: tel = '' try: email1 = pagina.split("E-mail")[1].split("</span>")[0].split( ">")[3].split("<")[0].strip() except: email1 = '' try: email2 = pagina.split("E-mail")[1].split("</span>")[1].split( "<span>")[1].split(">")[1].split("<")[0].strip() except: email2 = '' print('"' + name + '";"' + matri + '";"' + str(dire) + '";"' + tel + '";"' + email1 + '";"' + email2 + '";') finales.append('"' + name + '";"' + matri + '";"' + str(dire) + '";"' + tel + '";"' + email1 + '";"' + email2 + '";') saveFile('resultadosFinal.csv', finales) return
def descargarCategorias(codigo): payload = "lang=E&codi=" + codigo headers = {'content-type': "application/x-www-form-urlencoded"} pagina2 = descargarResultadoData( 'http://www.coamalaga.es/colegio/quienessomos/colegiados/colegiados.asp?Apellidos=&Localidad=' + codigo + '&TipoBusqueda=2&rnd=0.5768493866276709', 360, 10, payload, headers) pagina2 = pagina2.find_all(class_='link') for pagina in pagina2: try: name = pagina.text except: name = '' try: matri = pagina['id'].replace("divColegiado_", "") except: matri = '' try: dire = pagina.split(">-->")[1].split("</span>")[0].replace( ";", ",").strip() except: dire = '' try: tel = pagina.split("Tel")[1].split("</span>")[0].split( "<span>")[1].strip() except: tel = '' try: email1 = pagina.split("E-mail")[1].split("</span>")[0].split( ">")[3].split("<")[0].strip() except: email1 = '' try: email2 = pagina.split("E-mail")[1].split("</span>")[1].split( "<span>")[1].split(">")[1].split("<")[0].strip() except: email2 = '' if (matri): print('') print(codigo) print('"' + name + '";"' + matri) finales.append(matri + '";"' + name) saveFile('resultadosFinal.csv', finales) return
def escanearPagina(url): pag = 1 cant = 30 while (cant > 29): print('Escaneado ... ' + url + str(pag)) cant = 0 payload = "" headers = {'content-type': "application/x-www-form-urlencoded"} daatoss = descargarResultadoData(url + str(pag), 360, 10, payload, headers) pagina = daatoss.find_all(class_='item product product-item') datosCategoria = daatoss.find_all('ul', class_='items')[0].find_all('li') try: parte1 = datosCategoria[2].text.strip() except: parte1 = '' try: parte2 = datosCategoria[3].text.strip() except: parte2 = '' try: parte3 = datosCategoria[4].text.strip() except: parte3 = '' datosCategoria = '****' + parte1 + '___' + parte2 + '___' + parte3 for link in pagina: linkPagina = link.find_all('a')[0].prettify().strip().split( 'href="')[1].split('"')[0] + datosCategoria if ((linkPagina not in listaProductos)): cant = cant + 1 listaProductos.append(linkPagina) print('Productos encontrados:' + str(len(listaProductos))) pag = pag + 1 escaneados.append(url) saveFile('resultadosIndiv.csv', listaProductos) saveFile('escaneados.txt', escaneados) return
def escanearPagina(url): pag = 1 cant = 1 while (cant > 0): # print('Escaneado ... ' +url+ str(pag)) cant = 0 payload = "" headers = {'content-type': "application/x-www-form-urlencoded"} pagina = descargarResultadoData(url + str(pag), 360, 10, payload, headers) pagina = pagina.find_all(class_='col-c')[0].find_all('a') for link in pagina: linkPagina = link.prettify().strip().split('href="')[1].split( '"')[0] if ((linkPagina not in listaProductos) and ('www.yazbek.com.mx/item/' in linkPagina)): cant = cant + 1 listaProductos.append(linkPagina) print(linkPagina) # print('Productos encontrados:' + str(len(listaProductos))) pag = pag + 1 saveFile('resultadosIndiv.csv', listaProductos) # print('Escaneado ... ' +url) cant = 0 payload = "" headers = {'content-type': "application/x-www-form-urlencoded"} pagina = descargarResultadoData(url, 360, 10, payload, headers) pagina = pagina.find_all(class_='col-c')[0].find_all('a') for link in pagina: linkPagina = link.prettify().strip().split('href="')[1].split('"')[0] if (linkPagina not in listaProductos and 'www.yazbek.com.mx/item/' in linkPagina): cant = cant + 1 listaProductos.append(linkPagina) # print('Productos encontrados:' + str(len(listaProductos))) return
def escanearPagina(url): pag = 1; cant = 1; while (cant>0): conn = http.client.HTTPSConnection("www.academy.com") headers = { } print(url) cant =0 conn.request("GET", url + "?beginIndex="+str(pag), headers=headers) res = conn.getresponse() data = res.read() try: aaa = data.decode("utf-8") pagina = BeautifulSoup(aaa, 'html.parser'); valores = pagina.find_all('li'); for tt in valores: if ('catalogEntry_img' in tt.prettify()): linkPagina = tt.find_all('a')[0]['href'] if (linkPagina not in listaProductos): cant = cant + 1; listaProductos.append(linkPagina); except: aaa = '' # pagina = descargarResultadoData(url+str(pag), 360, 10, payload, headers) # pagina = pagina.find_all(class_='type-product'); # for link in pagina: # linkPagina = link.prettify().strip().split('href="')[1].split('"')[0]; # if (linkPagina not in listaProductos): # cant = cant + 1; # listaProductos.append(linkPagina); print('Productos encontrados:' + str(len(listaProductos))) pag = pag + 48 saveFile('productos_links.csv', listaProductos) print('Escaneado ... ' +url) return;
def descargarCategorias(lista): url1 = "http://www.coaib.org/es/directorio/colegiados--sociedades/arquitectos-ejercientes.aspx?page=" url2 = "&tipoBusqueda=1&nombre=a&demarcacion=0&municipio=0" elementos = list(range(125)) for aa in elementos: response = requests.request("GET", url1 + str(aa) + url2) descargarCategoriaEspecifica(response.text, lista) print(url1 + str(aa) + url2) saveFile('pino.txt', lista) return
def print_time( lista, filename): resultados = []; cant=1; cant2=1; for cat in lista: descargarCategoriaEspecifica22(cat.strip(), resultados); cant = cant + 1; print ( str(cant / 5.75) + '% ' + filename) ; cant2= cant2 + 1; if (cant2==50): saveFile(filename, resultados) cant2=0; saveFile(filename, resultados)
def escanearPagina(url): pag = 1; cant = 1; while (cant>0): print('Escaneado ... ' +url+ str(pag)) cant = 0; payload = "" headers = { 'content-type': "application/x-www-form-urlencoded" } pagina = descargarResultadoData(url+str(pag), 360, 10, payload, headers) pagina = pagina.find_all(class_='type-product'); for link in pagina: linkPagina = link.prettify().strip().split('href="')[1].split('"')[0]; if (linkPagina not in listaProductos): cant = cant + 1; listaProductos.append(linkPagina); print('Productos encontrados:' + str(len(listaProductos))) pag = pag + 1 saveFile('resultadosIndiv.csv', listaProductos) print('Escaneado ... ' +url) cant = 0; payload = "" headers = { 'content-type': "application/x-www-form-urlencoded" } pagina = descargarResultadoData(url, 360, 10, payload, headers) pagina = pagina.find_all(class_='type-product'); for link in pagina: linkPagina = link.prettify().strip().split('href="')[1].split('"')[0]; if (linkPagina not in listaProductos): cant = cant + 1; listaProductos.append(linkPagina); print('Productos encontrados:' + str(len(listaProductos))) return;
def print_time( lista, filename): resultados = []; cant=1; cant2=1; for cat in lista: try: descargarCategoriaEspecifica22(cat.strip(), resultados); except: print(' Fallo ' + cat ) cant = cant + 1; cant2= cant2 + 1; if (cant2==50): saveFile(filename, resultados) print ( str(cant / len(lista) * 100) + '% ' + filename) ; cant2=0; saveFile(filename, resultados)
def descargarCategorias(codigo): payload = "lang=E&codi="+codigo headers = { 'content-type': "application/x-www-form-urlencoded" } pagina = descargarResultadoData('http://www.coamalaga.es/colegio/quienessomos/colegiados/datoscolegiados.asp?idArqSoc='+codigo.split("\";\"")[0]+'&rnd=0.4214829040690903', 360, 10, payload, headers) # print (pagina); try: email = str(pagina).split("<![CDATA[")[1].split("]")[0].replace(";",",").replace("\"","").strip(); except: email=''; try: direccion = str(pagina).split("direccion")[1].split("<![CDATA[")[1].split("]")[0].replace(";",",").replace("\\xaa","ma ").replace("\"","").replace("<br>"," ").strip(); except: direccion=''; try: numerocolegiado = str(pagina).split("<numerocolegiado>")[1].split("</numerocolegiado>")[0].replace(";",",").replace("\"","").strip(); except: numerocolegiado=''; try: localidad = str(pagina).split("direccion")[1].split("<![CDATA[")[1].split("]")[0].split("-")[1].split("(")[0].replace(";",",").replace("\\xaa","ma ").replace("\"","").replace("<br>"," ").strip(); except: localidad=''; try: telefono = str(pagina).split("telefono")[1].split("<![CDATA[")[1].split("]")[0].replace(";",",").replace("\\xaa","ma ").replace("\"","").replace("<br>"," ").strip(); except: telefono=''; try: email2 = pagina.split("E-mail")[1].split("</span>")[1].split("<span>")[1].split(">")[1].split("<")[0].strip(); except: email2=''; print('"' + numerocolegiado + '";"' + codigo.split("\";\"")[1] + '";"' + direccion + '";"' + localidad + '";"' + telefono + '";"' + email + '";"' ) finales.append('"' + numerocolegiado + '";"' + codigo.split("\";\"")[1] + '";"' + direccion + '";"' + localidad + '";"' + telefono + '";"' + email + '";') saveFile('resultadosFinal_COL.csv', finales) return;
def descargarInfoAccion(url, accion): file = [] loadFile(accion + '.csv', file) data = descargarResultadoData(url, 360, 10, '', '') data = data.split("\"HistoricalPriceStore\":")[1].split("]")[0] + ']}' data = json.loads(data) if (file): file.append(parse(data["prices"][0])) else: file.append("Date,Open,High,Low,Close,Adj Close,Volume") for precio in data["prices"]: try: file.append(parse(precio)) except: print('') saveFile(accion + '.csv', file) return
def escanearProducto(fila, tiendaSelect): parentSKU = fila.split(';')[0] sku = fila.split(';')[2] if (parentSKU not in stocks): conn = http.client.HTTPSConnection("www.academy.com") headers = {} conn.request( "GET", 'https://www.academy.com/shop/AYRStoreLocatorServiceCmd?lat=40.8201966&lon=-96.70047629999999&ParentSKU=' + parentSKU, headers=headers) res = conn.getresponse() data = res.read() aaa = data.decode("utf-8") paginaStock = BeautifulSoup(aaa, 'html.parser') stocks[parentSKU] = paginaStock else: paginaStock = stocks[parentSKU] try: stockTiennda = paginaStock.prettify().split(tiendaSelect)[1].split( 'store-')[0].split(sku)[1].split('",')[0].replace('":"', '').split('"')[0] except: stockTiennda = '0' porce = str((len(listaResultadosSave) / len(listaResultados)) * 100) print(porce[0:4] + '% Escaneado ... ' + sku) listaResultadosSave.append(fila + ';' + str(stockTiennda)) saveFile('productos_con_stock.csv', listaResultadosSave) return
def print_time(lista, filename): resultados = [] cant = 1 cant2 = 1 for cat in lista: try: descargarCategoriaEspecifica( '../../Bash/Descargar_Sitios_Paralela2/' + cat.strip(), resultados) except: print('Errorcirijillo') # print(cat + ' ' + filename); cant = cant + 1 cant2 = cant2 + 1 if (cant2 == 50): print(str((cant / 4600) * 100) + '%') saveFile(filename, resultados) cant2 = 0
def descargarInfoAccion2(url1, url2, acumulaodo, labbel, d, pos, nombrefile, tip_imn, tip_op, ciudad): file = [] querystring = { "mtiponegocio": tip_op, "mtipoinmueble": tip_imn, "mciudad": ciudad, "selectedLocationCategory": "1", "selectedLocationFilter": "mciudad", "currentPage": pos, "totalPropertiesCount": "1184", "totalUsedPropertiesCount": "1184", "totalNewPropertiesCount": "0", "sfh": "1" } elem = [] orig = descargarResultadoData2(url1 + url2, querystring, 360, 10, '', '') data8 = orig.prettify().split('<div class="m_rs_list_item ">') #print(orig.prettify()) data = [] cant = 0 for mm in data8: if (cant == 0): cant = 1 else: elem.append(mm.split('href="')[1].split('"')[0]) for aa in elem: orig2 = descargarResultadoData3(aa, '', 360, 10, '', '') try: dato_nombre = orig2.find_all( class_="m_property_info_title")[0].find_all( "h1")[0].text.replace(',', ';').strip() except: dato_nombre = '' try: dato_link = aa except: dato_link = '' try: dato_area = '' except: dato_area = '' try: dato_precio = orig2.find_all( class_="m_property_info_table")[0].find_all( "dd")[0].text.replace(',', ';').strip() except: dato_precio = '' try: dato_habit = orig2.find_all( class_="m_property_info_table")[0].prettify().split( "Habitaciones")[1].split("<dd>")[1].split( "</dd>")[0].strip() except: dato_habit = '' try: dato_banio = orig2.find_all( class_="m_property_info_table")[0].prettify().split( "Ba")[1].split("<dd>")[1].split("</dd>")[0].strip() except: dato_banio = '' try: dato_edad = '' except: dato_edad = '' try: dato_parq = orig2.find_all( class_="m_property_info_table")[0].prettify().split( "Parqueadero")[1].split("<dd>")[1].split( "</dd>")[0].strip() except: dato_parq = '' # print('Nombre:' + dato_nombre + '\ndato_link ' + dato_link + '\ndato_area ' + dato_area + '\ndato_precio ' + dato_precio + '\ndato_habit ' + dato_habit + '\ndato_banio ' + dato_banio + '\ndato_edad ' + dato_edad + '\ndato_parq ' + dato_parq + '\n' ) d.append('www.fincaraiz.com.co' + aa) labbel.set("Escaneando pagina " + str(pos) + "...\n") app.update_idletasks() app.update() acumulaodo.append(dato_nombre + ',' + dato_link + ',' + dato_area + ',' + dato_precio + ',' + dato_habit + ',' + dato_banio + ',' + dato_edad + ',' + dato_parq) saveFile(nombrefile, acumulaodo) return elem
def descargarInfoAccion(url1, url2, acumulaodo, labbel, d, pos, nombrefile): file = [] orig = descargarResultadoData(url1, url2, 360, 10, '', '') data = orig.find_all(id="divAdverts")[0] data = data.find_all('ul') elem = [] for aa in data: try: elem.append(aa.find_all('a')[0]['href']) except: a = '' for aa in elem: ooo = descargarResultadoData(url1, aa, 360, 10, '', '') dato_nombre2 = ooo.find_all(class_="title")[0].text.replace( ',', ';').strip().rstrip('\r\n') dato_nombre = ' '.join(line.strip() for line in dato_nombre2.splitlines()) dato_link = 'www.fincaraiz.com.co' + aa.replace(',', ';') prov_area = '<div class="breadcrumb left">' + ooo.prettify().split( '<div class="breadcrumb left">')[1].split( '<div class="breadcrumb right">')[0] prov_area = BeautifulSoup(prov_area, 'html.parser') prov_area = prov_area.text prov_area = prov_area.split('/') dato_area = '' for aa in prov_area: if (not 'Inicio' in aa) and (not ' - ' in aa): dato_area = dato_area + '/' + aa.strip() try: dato_precio = ooo.find_all( class_="price")[0].find_all("h2")[0].text.replace(',', ';').strip() except: dato_precio = '' try: dato_habit = str( int(ooo.prettify().split( 'src="/App_Theme/css/img/ico_bed.png"')[1].split(':') [1].split('<')[0].strip())) except: dato_habit = '' try: dato_banio = str( int(ooo.prettify().split( 'src="/App_Theme/css/img/ico_bath.png"')[1].split(':') [1].split('<')[0].strip())) except: dato_banio = '' try: dato_parq = str( int(ooo.prettify().split( 'src="/App_Theme/css/img/ico_garaje.png"')[1].split(':') [1].split('<')[0].strip())) except: dato_parq = '' try: dato_edad = ooo.prettify().split('edad:')[1].split(',')[0].strip() except: dato_edad = '' # print('Nombre:' + dato_nombre + '\ndato_link ' + dato_link + '\ndato_area ' + dato_area + '\ndato_precio ' + dato_precio + '\ndato_habit ' + dato_habit + '\ndato_banio ' + dato_banio + '\ndato_edad ' + dato_edad + '\ndato_parq ' + dato_parq + '\n' ) d.append('www.fincaraiz.com.co' + aa) labbel.set("Escaneando pagina " + str(pos) + "...\n" + "\n".join(d)) app.update_idletasks() app.update() acumulaodo.append(dato_nombre + ',' + dato_link + ',' + dato_area + ',' + dato_precio + ',' + dato_habit + ',' + dato_banio + ',' + dato_edad + ',' + dato_parq) saveFile(nombrefile, acumulaodo) try: orig.find_all(title="Ir a la pagina Siguiente")[0] except: elem = [] return elem
#categoryLinks = []; #loadFile('categoryLinks.txt', categoryLinks); #if (categoryLinks): # print('Se toman los datos de categoryLinks.txt'); #else: # descargarCategorias(); # ------------- PASO 2 - Empresas --------------- #categoryLinksEscaneados = []; #resultados = []; #loadFile('resultados.csv', resultados); #for cat in categoryLinks: # descargarCategoriaEspecifica(cat.strip()) # categoryLinksEscaneados.append(cat.strip()) # saveFileExc('categoryLinks.txt', categoryLinks, categoryLinksEscaneados) files = [] loadFile('files.txt', files) cant = 1 cant2 = 1 for cat in files: descargarCategoriaEspecifica('../../Bash/Descargar_Sitios_Paralela/' + cat.strip()) print(cat + ' ' + str(cant) + '..82730') cant = cant + 1 cant2 = cant2 + 1 if (cant2 == 50): saveFile('resultados.csv', resultados) cant2 = 0
if nombre.endswith(' IZQ'): nombre2 = rreplace(nombre, ' IZQ', '', 1) if (nombre2 in hashtable_by_nombre): hashtable_by_sku[sku] = hashtable_by_nombre.get(nombre2) else: hashtable_by_sku[sku] = cant hashtable_by_nombre[nombre2] = cant cant = cant + 1 if (not nombre.endswith(' IZQ') and not nombre.endswith(' DER')): if (nombre in hashtable_by_nombre): hashtable_by_sku[sku] = hashtable_by_nombre.get(nombre) else: hashtable_by_sku[sku] = cant hashtable_by_nombre[nombre] = cant cant = cant + 1 tofile = [] for uu in fileBase: nombre = uu.split(",")[1].replace("\"", "") sku = uu.split(",")[0].replace("\"", "") tofile.append(str(hashtable_by_sku.get(sku)) + ',' + uu) saveFile('pino.txt', tofile)
def descargarFincaRaizPage(url1, url2, acumulaodo, labbel, d, pos, nombrefile): file = [] orig = descargarResultadoData(url1, url2, 360, 10, '', '') data = orig.find_all(id="divAdverts")[0] data = data.find_all('ul') elem = [] for aa in data: try: elem.append(aa.find_all('a')[0]['href']) except: a = '' for aa in elem: ooo = descargarResultadoData(url1, aa, 360, 10, '', '') dato_nombre2 = ooo.find_all(class_="title")[0].text.replace( ',', ';').strip().rstrip('\r\n') dato_nombre = ' '.join(line.strip() for line in dato_nombre2.splitlines()) dato_link = 'www.fincaraiz.com.co' + aa.replace(',', ';') prov_area = '<div class="breadcrumb left">' + ooo.prettify().split( '<div class="breadcrumb left">')[1].split( '<div class="breadcrumb right">')[0] prov_area = BeautifulSoup(prov_area, 'html.parser') prov_area = prov_area.text prov_area = prov_area.split('/') dato_area = '' for aa in prov_area: if (not 'Inicio' in aa) and (not ' - ' in aa): dato_area = dato_area + '/' + aa.strip() try: dato_precio = ooo.find_all( class_="price")[0].find_all("h2")[0].text.replace( ',', ';').strip().replace(".", "").replace("$", "") except: dato_precio = '' try: dato_habit = str( int(ooo.prettify().split( 'src="/App_Theme/css/img/ico_bed.png"')[1].split(':') [1].split('<')[0].strip())) except: dato_habit = '' try: dato_banio = str( int(ooo.prettify().split( 'src="/App_Theme/css/img/ico_bath.png"')[1].split(':') [1].split('<')[0].strip())) except: dato_banio = '' try: dato_parq = str( int(ooo.prettify().split( 'src="/App_Theme/css/img/ico_garaje.png"')[1].split(':') [1].split('<')[0].strip())) except: dato_parq = '' try: dato_edad = ooo.prettify().split('edad:')[1].split(',')[0].strip() except: dato_edad = '' try: dato_areaPriv = '"' + ooo.find( 'b', text=re.compile(r'Área privada')).parent.text.split( ':')[1].strip() + '"' except: dato_areaPriv = '' try: dato_areaConst = '"' + ooo.find( 'b', text=re.compile(r'Área Const')).parent.text.split( ':')[1].strip().split("m")[0].replace(",", ".") + '"' except: dato_areaConst = '' try: dato_nuevo = float(dato_precio.replace('"', '')) / float( dato_areaConst.replace('"', '')) except: dato_nuevo = '' try: dato_estrato = '"' + ooo.find('b', text=re.compile( r'Estrato')).parent.text.split(':')[1].text.replace( '"', '').strip() + '"' except: dato_estrato = '' try: dato_estado = ooo.find( 'b', text=re.compile(r'Estado')).parent.text.split(':')[1].strip() except: dato_estado = '' try: dato_piso = ooo.find( 'b', text=re.compile(r'Piso No')).parent.text.split(':')[1].strip() except: dato_piso = '' try: dato_descrip = '"' + ooo.find_all( 'div', class_='description')[0].find('p').text.replace( '"', '').strip() + '"' except: dato_descrip = '' try: dato_balcon = str( ooo.find('li', text=re.compile(r'Balcón')).text == 'Balcón') except: dato_balcon = '' try: dato_calentador = str( ooo.find('li', text=re.compile(r'Calentador')).text.strip() == 'Calentador') except: dato_calentador = '' try: dato_cocinaInt = str( ooo.find('li', text=re.compile(r'Cocina Integral')).text == 'Cocina Integral') except: dato_cocinaInt = '' try: dato_instalacioGas = str( ooo.find('li', text=re.compile(r'Instalación de gas')).text. strip() == 'Instalación de gas') except: dato_instalacioGas = '' try: dato_actualizado = ooo.find( 'li', style='display:inline;margin-right:30px;').text.replace( "Actualizado:", "").strip() except: dato_actualizado = '' try: dato_visitas = '' except: dato_visitas = '' try: dato_codweb = ooo.find_all( 'li', style='display:inline; margin-right:30px')[1].text except: dato_codweb = '' d.append('www.fincaraiz.com.co' + aa) labbel.set("Escaneando pagina " + str(pos) + "...\n" + "\n".join(d)) app.update_idletasks() app.update() acumulaodo.append(dato_nombre + ',' + dato_link + ',' + dato_area + ',' + dato_precio + ',' + dato_habit + ',' + dato_banio + ',' + dato_edad + ',' + dato_parq + ',' + dato_areaPriv + ',' + dato_areaConst + ',' + dato_estrato + ',' + dato_estado + ',' + dato_descrip + ',' + dato_piso + ',' + dato_balcon + ',' + dato_calentador + ',' + dato_cocinaInt + ',' + dato_instalacioGas + ',' + dato_actualizado + ',' + dato_visitas + ',' + dato_codweb + ',' + str(dato_nuevo)) saveFile(nombrefile, acumulaodo) try: orig.find_all(title="Ir a la pagina Siguiente")[0] except: elem = [] return elem
def descargarMetroCuadradoPage(url1, url2, acumulaodo, labbel, d, pos, nombrefil, tip_imn, tip_op, ciudad, ciudad2, checkbox, ciudad3): nombrefile = '' if (checkbox.get() < 2): nombrefile = nombrefil + ciudad3 + '.csv' querystring = { "mtiponegocio": tip_op, "mtipoinmueble": tip_imn, "mciudad": ciudad2, "selectedLocationCategory": "1", "selectedLocationFilter": "mciudad", "currentPage": pos, "totalPropertiesCount": "1184", "totalUsedPropertiesCount": "1184", "totalNewPropertiesCount": "0", "sfh": "1" } else: nombrefile = nombrefil + ciudad.replace(" ", "_") + '.csv' querystring = { "mtiponegocio": tip_op, "mtipoinmueble": tip_imn, "mciudad": ciudad, "selectedLocationCategory": "1", "selectedLocationFilter": "mciudad", "currentPage": pos, "totalPropertiesCount": "1184", "totalUsedPropertiesCount": "1184", "totalNewPropertiesCount": "0", "sfh": "1" } pageResponse = descargarResultadoData2(url1 + url2, querystring, 360, 10, '', '') pubList = pageResponse.prettify().split('<div class="m_rs_list_item ">') print(querystring) elem = [] cant = 0 if 'No tenemos inmuebles que coincidan con su' in pageResponse.prettify(): labbel.set('No tenemos inmuebles que coincidan con su busqueda') app.update_idletasks() app.update() acumulaodo.append( 'No tenemos mas inmuebles que coincidan con su busqueda') saveFile(nombrefile.replace("/", "_"), acumulaodo) return elem for pub in pubList: if (cant == 0): cant = 1 else: elem.append(pub.split('href="')[1].split('"')[0]) for aa in elem: orig2 = descargarResultadoData3(aa, '', 360, 10, '', '') try: dato_nombre = orig2.find_all( class_="m_property_info_title")[0].find_all( "h1")[0].text.replace(',', ';').strip() except: dato_nombre = '' try: dato_link = aa except: dato_link = '' try: dato_area = orig2.find_all( class_="m_property_info_table")[0].prettify().split( "construida")[1].split("<dd>")[1].split( "<")[0].strip().replace("de", "").replace("m", "") except: dato_area = '' try: dato_precio = orig2.find_all( class_="m_property_info_table")[0].find_all( "dd")[0].text.replace(',', '').replace('.', '').replace('$', '').strip() except: dato_precio = '' flo_area = float(dato_area) flo_pre = float(dato_precio) dato_nuevo = flo_pre / flo_area try: dato_habit = orig2.find_all( class_="m_property_info_table")[0].prettify().split( "Habitaciones")[1].split("<dd>")[1].split( "</dd>")[0].strip() except: dato_habit = '' try: dato_banio = orig2.find_all( class_="m_property_info_table")[0].prettify().split( "Ba")[1].split("<dd>")[1].split("</dd>")[0].strip() except: dato_banio = '' try: dato_edad = '' except: dato_edad = '' try: dato_parq = orig2.find_all( class_="m_property_info_table")[0].prettify().split( "Parqueadero")[1].split("<dd>")[1].split( "</dd>")[0].strip() except: dato_parq = '' try: dato_codweb = orig2.find_all(class_="ref")[0].text.strip() except: dato_codweb = '' try: dato_inmobiliaria = orig2.find_all( class_="datos_inmobiliaria")[0].text.strip() except: dato_inmobiliaria = '' try: dato_inmobiliaria = orig2.find_all( class_="datos_inmobiliaria")[0].text.strip() except: dato_inmobiliaria = '' try: dato_descrip = '"' + orig2.find_all( id="pDescription")[0].text.replace('"', '').strip() + '"' except: dato_descrip = '' try: dato_nombreBarrio = orig2.prettify().split( "Nombre común del barrio")[1].split("<h4>")[1].split( "</h4>")[0].strip() except: dato_nombreBarrio = '' try: dato_nombreBarrioCat = orig2.prettify().split( "Nombre del barrio catastral")[1].split("<h4>")[1].split( "</h4>")[0].strip() except: dato_nombreBarrioCat = '' try: dato_valorVenta = orig2.prettify().split( "Valor de venta")[1].split("<h4>")[1].split( "<")[0].strip().replace(".", "").replace("$", "") except: dato_valorVenta = '' try: dato_valorArriendo = orig2.prettify().split( "Valor de arriendo")[1].split("<h4>")[1].split( "<")[0].strip().replace(".", "").replace("$", "") except: dato_valorArriendo = '' try: dato_areaConst = orig2.find_all( class_="m_property_info_details")[0].prettify().split( "Área construida")[1].split("<h4>")[1].split( "<")[0].strip() dato_areaConst = dato_areaConst.replace("m", "") except: dato_areaConst = '' try: dato_tiempoCost = orig2.prettify().split("Tiempo de construido")[ 1].split("<h4>")[1].split("<")[0].strip() except: dato_tiempoCost = '' try: dato_biblio = orig2.prettify().split("Estudio o biblioteca")[ 1].split("<h4>")[1].split("<")[0].strip() except: dato_biblio = '' try: dato_terraza = orig2.prettify().split("Terraza/Balcón")[1].split( "<h4>")[1].split("<")[0].strip() except: dato_terraza = '' try: dato_instalacioGas = orig2.prettify().split( "Tipo instalación de gas")[1].split("<h4>")[1].split( "<")[0].strip() except: dato_instalacioGas = '' try: dato_instalacioCalef = orig2.prettify().split( "Tipo de calentador")[1].split("<h4>")[1].split( "<")[0].strip() except: dato_instalacioCalef = '' try: dato_vista = orig2.prettify().split("Vista")[1].split( "<h4>")[1].split("<")[0].strip() except: dato_vista = '' try: dato_habServ = orig2.prettify().split("Cuarto de servicio")[ 1].split("<h4>")[1].split("<")[0].strip() except: dato_habServ = '' try: dato_tipCortina = orig2.prettify().split( "Tipo de Cortinas")[1].split("<h4>")[1].split("<")[0].strip() except: dato_tipCortina = '' try: dato_tipPiso = orig2.prettify().split("Tipo de acabado piso")[ 1].split("<h4>")[1].split("<")[0].strip() except: dato_tipPiso = '' try: dato_tipPisoAlcoba = orig2.prettify().split( "Tipo de piso en alcobas")[1].split("<h4>")[1].split( "<")[0].strip() except: dato_tipPisoAlcoba = '' try: dato_numPiso = orig2.prettify().split("Número de piso")[1].split( "<h4>")[1].split("<")[0].strip() except: dato_numPiso = '' d.append(aa) labbel.set("Escaneando pagina " + str(pos) + "...\n" + "\n".join(d)) app.update_idletasks() app.update() acumulaodo.append(dato_nombre + ',' + dato_link + ',' + dato_area + ',' + dato_precio + ',' + dato_habit + ',' + dato_banio + ',' + dato_edad + ',' + dato_parq + ',' + dato_codweb + ',' + dato_inmobiliaria + ',' + dato_descrip + ',' + dato_nombreBarrio + ',' + dato_nombreBarrioCat + ',' + dato_valorVenta + ',' + dato_valorArriendo + ',' + dato_areaConst + ',' + dato_tiempoCost + ',' + dato_biblio + ',' + dato_terraza + ',' + dato_instalacioGas + ',' + dato_instalacioCalef + ',' + dato_vista + ',' + dato_habServ + ',' + dato_tipCortina + ',' + dato_tipPiso + ',' + dato_tipPisoAlcoba + ',' + dato_numPiso + ',' + str(dato_nuevo)) saveFile(nombrefile.replace("/", "_"), acumulaodo) return elem
'http://www.vianala.com/page/', 'http://www.vianala.com/catalogo/bolsas/tienda-online-bolsos-en-mexico/page/', 'http://www.vianala.com/catalogo/bolsas/comprar-bolsos-por-internet/', 'http://www.vianala.com/catalogo/bolsas/compra-de-bolsos-online/page/', 'http://www.vianala.com/catalogo/bolsas/venta-bolsos/page/', 'http://www.vianala.com/catalogo/bolsas/bolsos-tipo-mochila-piel/', 'http://www.vianala.com/catalogo/bolsas/tienda-online-de-bolsos/page/', 'http://www.vianala.com/catalogo/bolsas/bolsos-venta-online/', 'http://www.vianala.com/catalogo/bolsas/crossbody/', 'http://www.vianala.com/catalogo/bolsas/bolsas-con-bordados-chiapanecos/', 'http://www.vianala.com/catalogo/carteras/page/', 'http://www.vianala.com/catalogo/ofertas/', 'http://www.vianala.com/catalogo/regalos-corporativos-empresariales/page/', 'http://www.vianala.com/catalogo/portafolios-de-piel/', 'http://www.vianala.com/catalogo/carteras/cartera-para-hombre/', 'http://www.vianala.com/catalogo/mensajeras/bolsos-tipo-bandolera-para-caballero/', 'http://www.vianala.com/catalogo/regalos-corporativos-empresariales/tarjeteros-de-piel/', 'http://www.vianala.com/catalogo/regalos-corporativos-empresariales/articulos-piel-viaje/portacorbatas-de-piel/']; listaLinksIniciales2 = [ 'http://www.vianala.com/catalogo/bolsas/crossbody/']; listaProductos = [] for pagina in listaLinksIniciales: escanearPagina(pagina); listaResultados = [] for prod in listaProductos: escanearProducto(prod); saveFile('pino.csv',listaResultados);
return # ------------- PASO 1 - Categorias --------------- #categoryLinks = []; #loadFile('categoryLinks.txt', categoryLinks); #if (categoryLinks): # print('Se toman los datos de categoryLinks.txt'); #else: # descargarCategorias(); # ------------- PASO 2 - Empresas --------------- #categoryLinksEscaneados = []; #resultados = []; #loadFile('resultados.csv', resultados); #for cat in categoryLinks: # descargarCategoriaEspecifica(cat.strip()) # categoryLinksEscaneados.append(cat.strip()) # saveFileExc('categoryLinks.txt', categoryLinks, categoryLinksEscaneados) lista = [] #loadFile('numero.csv', lista); #finales = []; #for link in lista: descargarCategorias() saveFile('pino.txt', lista)
def escanearProducto(url): if (url.split('****')[0].strip() in listaEscaneados): print('Repetido:' + url.split('****')[0].strip()) return print( url.split('****')[1].replace('___', '/').strip() + ' --- > ' + url.split('****')[0].strip()) cant = 1 payload = "" headers = {'content-type': "application/x-www-form-urlencoded"} html = descargarResultadoDataSinBeautiful( url.split('****')[0], 360, 10, payload, headers) pagina = BeautifulSoup(html, 'html.parser') try: codSKU = pagina.find_all( class_='product attribute sku')[0].text.replace('SKU', '').strip() except: return try: coloresReq = str(html).split('var colors = ')[1].split(';')[0].replace( "'", "").replace("\\", "") tallesReq = str(html).split('var sizes = ')[2].split(';')[0].replace( "'", "").replace("\\", "") datosLocos = descargarResultadoDataSinBeautiful( 'http://www.priceshoes.com/services/search?action=getInventory&product=' + codSKU.replace('ID-', '') + '&sizes=' + tallesReq + '=&colors=' + coloresReq + '&prodId=' + codSKU + '&color=', 360, 10, payload, headers) # saveFile(codSKU+'pino.tt',[str(html)]); datosLocos = BeautifulSoup(datosLocos, 'html.parser') ingg = datosLocos.find_all('tr') vallus = {} nombreses = ingg[0].find_all('td') pos = 0 for aaa in nombreses: vallus[pos] = aaa.text pos = pos + 1 fasfasf = [] for aaa in ingg: bbb = aaa.find_all('td') lala = [] inde = 0 for mm in bbb: # print(mm) if (inde > 0): try: lala.append('[' + vallus[inde] + ']' + mm.text) except: pipipi = '' else: lala.append(mm.text) inde = inde + 1 fasfasf.append(' '.join(lala).replace( 'Fecha de Llegada:No Disponible', '')) stockLococco = '' for ii in fasfasf: if not 'TIENDAS' in ii: stockLococco = stockLococco + ii + '\n' except: print('Fallo Tiendas') stockLococco = '' vallus = {} try: departamento = url.split('****')[1].split('___')[0] except: departamento = '' try: genero = url.split('****')[1].split('___')[1] except: genero = '' try: categoria = url.split('****')[1].split('___')[2] except: categoria = '' try: nombre = pagina.find_all(class_='base')[0].text.strip() except: nombre = '' try: foto = str(html).split('"img":"') aa = [] for bb in foto: if ('/catalog/product/cache/image/' in bb.split('"')[0].replace('\\', '')): aa.append(bb.split('"')[0].replace('\\', '')) foto = aa except: foto = '' try: colores = str(html).split('jsonSwatchConfig: {')[1].split( '}}}')[0].split('"label":"') aa = [] for bb in colores: if (bb.split('"')[0].replace('\\', '')): aa.append(bb.split('"')[0].replace('\\', '')) colores = aa except: colores = [] try: descripcion = pagina.find_all( class_='product attribute description')[0].text.strip() except: descripcion = '' try: descripcion2 = pagina.find_all( class_='data table additional-attributes')[0].text.replace( 'DESCRIPCIÓN DE PRODUCTO', '').strip().replace('\n\n', '*****').replace('\n', ': ').replace( '*****', '\n').replace('\n: ', '\n').split('\n') descripcion2.pop(0) descripcion2 = '\n'.join(descripcion2) except: descripcion2 = '' try: talla = str(html).split('"Talla Ropa","options":[')[1].split( '"template":')[0] talla = talla.split('id') listaTall = [] for tt in talla: if (not ('products":[]' in tt) and ('"label":"' in tt)): listaTall.append(tt.split('"label":"')[1].split('"')[0]) except: listaTall = ['AGOTADO'] try: imagenes = pagina.find_all('embed')[0]['src'] except: imagenes = '' qq = [] va = 'false' for aa in vallus: if (va == 'false'): va = 'true' else: qq.append(vallus[aa]) valorString = '"' + codSKU + '";"' + departamento + '";"' + genero + '";"' + categoria + '";"' + url.split( '****' )[0] + '";"' + nombre + '";"' + ', '.join( qq ) + '";"' + stockLococco + '";"' + descripcion + '";"' + descripcion2 + '";"' + ', '.join( foto) + '";"' + ', '.join(colores) + '";' if ((valorString not in listaResultados) and (codSKU not in listaEscaneados)): listaResultados.append(valorString) listaEscaneados.append(url.split('****')[0].strip()) else: print('Repetido ... ' + codSKU) saveFile('pino.csv', listaResultados) saveFile('prodEscaneados.csv', listaEscaneados) return
def escanearProducto(url): print(str(len(listaResultados) / len(listaProductos) * 100) + ' ' + url) conn = http.client.HTTPSConnection("articulo.mercadolibre.com.mx") headers = {} cant = 0 conn.request("GET", url, headers=headers) res = conn.getresponse() data = res.read() # try: aaa = data.decode("utf-8") pagina = BeautifulSoup(aaa, 'html.parser') campos = [] campos.append(url) try: campos.append('"' + pagina.find_all('h1', class_='item-title__primary ') [0].text.strip().replace('"', '\'\'') + '"') except: return campos.append('"' + pagina.find_all('span', class_='price-tag') [0].find_all('span', class_='price-tag-symbol')[0] ['content'].strip().replace('"', '\'\'') + '"') carater = pagina.find_all('li', class_='specs-item specs-item-primary') marca = '' for car in carater: if ('Marca' in car.text and 'notebook' not in car.text): marca = car.text.split(':')[0].replace('Marca', '').strip() + '\n' campos.append('"' + marca + '"') modelo = '' for car in carater: if ('Modelo de notebook' in car.text): modelo = car.text.split(':')[0].replace('Modelo de notebook', '').strip() + '\n' campos.append('"' + modelo + '"') compat = '' for car in carater: if ('Tamaño de pantalla' in car.text): compat = car.text.split(':')[0].replace('Tamaño de pantalla', '').strip() + '\n' campos.append('"' + compat + '"') try: desc = pagina.find_all( 'div', class_='item-description__text')[0].prettify().strip().replace( '<br>', '\n').replace('</br>', '') while (' ' in desc): desc = desc.replace(' ', ' ') while (' ' in desc): desc = desc.replace(' ', ' ') while ('\n \n' in desc): desc = desc.replace('\n \n', '\n') while ('\n\n' in desc): desc = desc.replace('\n\n', '\n') desc = desc.replace('<p>', '').replace('</p>', '').replace('</div>', '') desc = desc.replace('"', '\'\'') desc = desc.replace('<div class=\'\'item-description__text\'\'>', '') except: desc = '' try: desc = desc.split('ntanos y con gusto te ayudaremos.')[1].split( '_ _ _')[0].strip() except: desc = desc campos.append('"' + desc + '"') fotosAUX = pagina.find_all('img') fotos = [] for aa in fotosAUX: if ('https://http2.mlstatic.com/' in aa.prettify() and 'NQ_NP' in aa['src']): campos.append('"' + aa['src'] + '"') listaResultados.append(';'.join(campos)) saveFile('PANTALLAS-Escaneado.csv', listaResultados) return
def escanearProducto(url): print( str(len(listaResultados)) + ' ' + str(len(listaResultados) / len(listaProductos) * 100) + ' ' + url) conn = http.client.HTTPSConnection("articulo.mercadolibre.com.mx") headers = {} cant = 0 conn.request("GET", url, headers=headers) res = conn.getresponse() data = res.read() # try: aaa = data.decode("utf-8") pagina = BeautifulSoup(aaa, 'html.parser') campos = [] campos.append(url) try: campos.append('"' + pagina.find_all('h1', class_='item-title__primary ') [0].text.strip().replace('"', '\'\'') + '"') except: return campos.append('"' + pagina.find_all('span', class_='price-tag') [0].find_all('span', class_='price-tag-symbol')[0] ['content'].strip().replace('"', '\'\'') + '"') carater = pagina.find_all('li', class_='specs-item specs-item-primary') marca = '' for car in carater: if ('Marca del cargador' in car.text): marca = car.text.split(':')[0].replace('Marca del cargador', '').strip() + '\n' campos.append('"' + marca + '"') modelo = '' for car in carater: if ('Modelo del cargador' in car.text): modelo = car.text.split(':')[0].replace('Modelo del cargador', '').strip() + '\n' campos.append('"' + modelo + '"') compat = '' for car in carater: if ('Notebooks compatibles' in car.text): compat = car.text.replace('Notebooks compatibles', '').strip() + '\n' campos.append('"' + compat + '"') carga = '' for car in carater: if ('Potencia' in car.text): carga = car.text.split(':')[0].replace('Potencia', '').strip() + '\n' campos.append('"' + carga + '"') cone = '' for car in carater: if ('Conector de salida' in car.text): cone = car.text.split(':')[0].replace('Conector de salida', '').strip() + '\n' campos.append('"' + cone + '"') try: desc = pagina.find_all( 'div', class_='item-description__text')[0].prettify().strip().replace( '<br>', '\n').replace('</br>', '') except: try: desc = pagina.find_all( 'div', class_='item-description__html-text')[0].find_all('p')[0].text except: desc = '' while (' ' in desc): desc = desc.replace(' ', ' ') print('.') while (' ' in desc): desc = desc.replace(' ', ' ') print(',') while ('\n \n' in desc): desc = desc.replace('\n \n', '\n') print(';') while ('\n\n' in desc): desc = desc.replace('\n\n', '\n') print(':') desc = desc.replace('<p>', '').replace('</p>', '').replace('</div>', '') desc = desc.replace('"', '\'\'') desc = desc.replace('<div class=\'\'item-description__text\'\'>', '') aux = desc try: desc = 'Disponible en ' + desc.split( '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' )[0].split('Disponible en')[1].strip() except: desc = desc list1 = desc.replace( '==============================', '--------------------------------------------------------').replace( '======================', '--------------------------------------------------------').split( '--------------------------------------------------------') desc = '' for aa in list1: if ('Para saber si este producto es compatible' not in aa and 'NO ES NECESARIO CONFIRMAR' not in aa and 'AQUI PUEDES VER TODOS NUESTROS PRODUCTOS A' not in aa and 'Nuestras baterias son %100 nuevas' not in aa and 'Para saber si esta bateria es compatible' not in aa and '¿QUÉ HAY EN LA CAJA?' not in aa #and ( 'Compatible con' in aa or 'COMPATIBLE CON' in aa or 'MODELOS DE LAPTOP COMPATIBLES' in aa or 'Compatibilidad' in aa or 'Reemplaza a los siguiente numeros de parte:' in aa ) ): desc += aa.strip() + '\n\n' #else: # print(aa.strip()) if (desc.strip() == ''): desc = aux print('vacio ' + aux) campos.append('"' + desc + '"') fotosAUX = pagina.find_all('img') fotos = [] for aa in fotosAUX: if ('https://http2.mlstatic.com/' in aa.prettify() and 'NQ_NP' in aa['src']): campos.append('"' + aa['src'] + '"') listaResultados.append(';'.join(campos)) saveFile('CARGADORES-Escaneado.csv', listaResultados) return
tab1[aa.split(',')[2]] = aa else: print(aa) print('Cant Lista 1: ' + str(len(lista1))) print('Cant Lista 2: ' + str(len(tab2))) print('Cant Lista 1 - Lista 2: ' + str(len(tab1))) lista82 = [] for aa in tab1: valor = tab1[aa] codigo = valor.split(',')[1] sku = valor.split(',')[2] nombre = valor.split(',')[3] marca = valor.split(',')[6] precio = valor.split(',')[9] try: valor_catego = cat[valor.split(',')[14].strip()] except: valor_catego = 'vacio' valor_nota = notas[sku] lista82.append(codigo + ',' + sku + ',' + nombre + ',' + marca + ',' + valor_catego + ',,' + precio + ',,,,,,' + valor_nota) saveFile("resultado.csv", lista82)
def escanearProducto(url): print( str(len(listaResultados)) + ' ' + str(len(listaResultados) / len(listaProductos) * 100) + ' ' +url) conn = http.client.HTTPSConnection("articulo.mercadolibre.com.mx") headers = { } cant =0 conn.request("GET", url, headers=headers) res = conn.getresponse() data = res.read() # try: aaa = data.decode("utf-8") pagina = BeautifulSoup(aaa, 'html.parser'); campos = [] campos.append(url); try: campos.append('"' + pagina.find_all('h1', class_='item-title__primary ')[0].text.strip().replace('"','\'\'') + '"'); except: return campos.append('"' + pagina.find_all('span', class_='price-tag')[0].find_all('span', class_='price-tag-symbol')[0]['content'].strip().replace('"','\'\'') + '"' ); carater = pagina.find_all('li', class_='specs-item specs-item-primary') marca = '' for car in carater: if ('Marca' in car.text and 'bater' not in car.text): marca= car.text.split(':')[0].replace('Marca','').strip() + '\n' campos.append( '"' + marca + '"' ) modelo = '' for car in carater: if ('Modelo de la batería' in car.text): modelo= car.text.split(':')[0].replace('Modelo de la batería','').strip() + '\n' if (modelo == ''): for car in carater: if ('Modelo' in car.text): modelo= car.text.split(':')[0].replace('Modelo','').strip() + '\n' campos.append( '"' + modelo + '"' ) compat = '' for car in carater: if ('Compatibilidad con notebooks' in car.text): compat= car.text.replace('Compatibilidad con notebooks','').replace('Compatible','').strip() + '\n' campos.append( '"' + compat + '"' ) carga = '' for car in carater: if ('Capacidad de la batería' in car.text): carga= car.text.split(':')[0].replace('Capacidad de la batería','').strip() + '\n' campos.append( '"' + carga + '"' ) try: desc = pagina.find_all('div', class_='item-description__text')[0].prettify() desc = desc.strip() desc = desc.replace('<br>','\n') desc = desc.replace('</br>',''); while (' ' in desc): desc = desc.replace(' ',' ') while (' ' in desc): desc = desc.replace(' ',' ') while ('\n \n' in desc): desc = desc.replace('\n \n','\n') while ('\n\n' in desc): desc = desc.replace('\n\n','\n') desc = desc.replace('<p>','').replace('</p>','').replace('</div>',''); desc = desc.replace('"','\'\''); desc = desc.replace('<div class=\'\'item-description__text\'\'>','') except: desc = '' aux = desc; descSuma = '' for aa in desc.split('======================'): if ( 'Para saber si este producto es compatible' not in aa and 'NO ES NECESARIO CONFIRMAR' not in aa and 'AQUI PUEDES VER TODOS NUESTROS PRODUCTOS A' not in aa and 'Nuestras baterias son %100 nuevas' not in aa and 'Para saber si esta bateria es compatible' not in aa and 'Bateria Para ' not in aa and ( 'COMPATIBLE CON ' in aa or 'Compatible con ' in aa or 'REEMPLAZA A LOS SIGUIENTES' in aa or 'Numeros de parte compatibles' in aa ) and 'Bateria Laptop' not in aa): descSuma += aa.strip() + '\n\n'; # else: # print(aa.strip()) if (descSuma.strip() == ''): descSuma = aux; campos.append('"' + descSuma + '"' ); fotosAUX = pagina.find_all('img'); fotos = [] for aa in fotosAUX: if ('https://http2.mlstatic.com/' in aa.prettify() and 'NQ_NP' in aa['src']): campos.append('"' + aa['src'] + '"' ); listaResultados.append(';'.join(campos)) saveFile('BATERIAS-Escaneado.csv', listaResultados) return;
import threading import _thread import time # # # ********************************** Programa principal ********************************** # # files = [] loadFile('resultados1.csv', files) loadFile('resultados2.csv', files) loadFile('resultados3.csv', files) loadFile('resultados4.csv', files) loadFile('resultados5.csv', files) loadFile('resultados6.csv', files) loadFile('resultados7.csv', files) loadFile('resultados8.csv', files) loadFile('resultados9.csv', files) loadFile('resultados10.csv', files) loadFile('resultados11.csv', files) loadFile('resultados12.csv', files) loadFile('resultados13.csv', files) loadFile('resultados14.csv', files) loadFile('resultados15.csv', files) loadFile('resultados16.csv', files) saveFile('compiilado.csv', files)
def escanearProducto(url): if (url in listaDone): return porce = str( ((len(listaDone) + len(listaFallo)) / len(listaProductos)) * 100) print(porce[0:4] + '% Escaneado ... ' + url) conn = http.client.HTTPSConnection("www.academy.com") headers = {} cant = 0 conn.request("GET", url, headers=headers) res = conn.getresponse() data = res.read() # try: #aaa = data.decode('unicode').encode('utf-8') #print(data) aaa = data.decode('utf8', 'replace') pagina = BeautifulSoup(aaa, 'html.parser') try: parentSKU = pagina.prettify().split('"parent_sku": "')[1].split('"')[0] except: listaFallo.append(url + '; No parentSKU') saveFile('productos_fail.csv', listaFallo) return titulo = pagina.find_all('h1', class_='rpdp-product-title')[0].text marca = pagina.prettify().split('itemprop="brand">')[1].split( '<')[0].strip() descripcion = pagina.prettify().split('itemprop="description">')[1].split( '<')[0].strip() categoria2 = pagina.prettify().split('id="brBreadCrum"')[1].split( 'value="')[1].split('"')[0].replace('&', '&') if (len(categoria2.split('|')) > 3): categoria = categoria2.split('|')[1] + ' --> ' + categoria2.split( '|')[2] + ' --> ' + categoria2.split('|')[3] else: categoria = categoria2.replace('Academy|', '') # conn.request("GET", 'https://www.academy.com/shop/AYRStoreLocatorServiceCmd?lat=40.8201966&lon=-96.70047629999999&ParentSKU=' + parentSKU, headers=headers) # res = conn.getresponse() # data = res.read() # aaa = data.decode("utf-8") # paginaStock = BeautifulSoup(aaa, 'html.parser'); valores = pagina.prettify().split('catentry_id') for yyy in valores: if ('"Attributes" :' in yyy): resursos = yyy.split('"Attributes" : {')[1].split('}')[0] bbb = resursos.split(',') foto0 = yyy.split('ItemImage" : "//')[1].split('"')[0] fotos = yyy.split('"DescAttributes" : {')[1].split('}')[0] fotos = fotos.split(',') try: foto1 = fotos[0].split('"')[1].replace( 'image_', '').split('#//')[1].strip() except: foto1 = '' try: foto2 = fotos[1].split('"')[1].replace( 'image_', '').split('#//')[1].strip() except: foto2 = '' try: foto3 = fotos[2].split('"')[1].replace( 'image_', '').split('#//')[1].strip() except: foto3 = '' item = yyy.split('mfPartNumber')[1].split(',')[0].replace( '" : "', '').replace('"', '').strip() sku = yyy.split('partNumber')[1].split(',')[0].replace( '" : "', '').replace('"', '').strip() precio = yyy.split('listPrice')[1].split(',')[0].replace( '" : "', '').replace('"', '').replace(':', '').strip() try: color = bbb[0].split('"')[1].replace('Color_', '').strip() except: color = '' try: tamanio = bbb[1].split('"')[1].replace('Size_', '').strip() except: tamanio = '' listaResultados.append(parentSKU + ';' + item + ';' + sku + ';' + color + ';' + tamanio + ';' + titulo + ';' + marca + ';' + precio + ';' + descripcion + ';' + foto0 + ';' + foto1 + ';' + foto2 + ';' + foto3 + ';' + categoria + ';' + url) saveFile('productos_datos.csv', listaResultados) listaDone.append(url) saveFile('productos_ya_escaneados.csv', listaDone) return