Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - lemos.ema

#1
Hola Comunidad hermosa ! :D
tengo un problema a la hora de utilizar PySpark. Entiendo en concepto de que trabaja en clusteres y que puede hacer peticiones a base de datos tipo Hadoop. Estas acciones funcionan en paralelo y esta es la ventaja de trabajar con Frameworks como este. Creo que mucha gente tiene bastantes dudas de como utilizarlo ya que en Internet no hay mucha información clara y hay mucha gente preguntando (por lo que creo que este post le va a ser de gran ayuda a muchos)

Pero a la hora de introducir todos esos conceptos en la practica estoy medio perdido. Yo uso Python por ende les dejo el codigo en Python:

Código: python
from pyspark.sql.types import StructType, StructField, FloatType, BooleanType
from pyspark.sql.types import DoubleType, IntegerType, StringType
import pyspark

from pyspark import SQLContext



conf = pyspark.SparkConf()

sc = pyspark.SparkContext.getOrCreate(conf=conf)
sqlcontext = SQLContext(sc)

schema = StructType([
    StructField("sales", IntegerType(),True),
    StructField("sales person", StringType(),True)
])

data = ([(10, 'Walker'),
        ( 20, 'Stepher')
        ])
       
df=sqlcontext.createDataFrame(data,schema=schema)

df.show()


Corre lo mas bien pero me surgen muchas preguntas en cuanto al código.

1)-¿Dónde elijo la cantidad de nodos que usaré? ¿Y dónde se ejecutan, en esta misma computadora que tiene particiones de memoria? Porque teóricamente los RDD tienen que trabajar en Paralelo no ? (esa es la gracia de Spark)

¿Dónde elijo la cantidad de memoria que usaré? Y si quiero usar memoria y disco a la vez?
3)Si quiero acceder a una base de datos de Hadoop, ¿cómo puedo hacerlo?

Podrían contestar con un código y un paréntesis al lado explicando las leneas y para que funcionan. Saludos y muchas Gracias
#2
Hola. ¿cómo están?
Me ayudan por favor con este Php, sé que para ustedes seguramente es demasiado simple (tenganme paciencia, estoy aprendiendo).
Mi idea es ... en primera instancia es tomar toda el shortcode de la URL de cada una de las fotos. Hasta ahora todo bien ... pero luego quiero usar el shortcode para ingresar cada una de esas url (osea de cada una de las fotos) y de allí tomar más información como por ejemplo el nombre (full_name , solo puse eso pero mi idea es tomar el full_name y 3 datos mas como la cantidad de followers y la diferencia horaria de post en post, pero bueno con el full_name por ahora vamos bien)

les dejo el codigo:
Código: php
<?php
ini_set('max_execution_time', 0);
$baseUrl = "https://www.instagram.com/explore/tags/comida/?__a=1";
$url = $baseUrl;
$baseUrl2 = "https://www.instagram.com/p/";
$url2 = $baseUrl2;

while(1) {
    $file = fopen("links.txt","a");
    $json = (object) json_decode(file_get_contents($url));
    foreach($json->{'graphql'}->hashtag->edge_hashtag_to_media->edges as $object_return){
        var_dump($object_return->node->shortcode);
        echo "{$object_return->node->shortcode}\n";
        fwrite($file, $object_return->node->shortcode);
        fwrite($file,"\n");
        $url2 .= ($object_return->node->shortcode);
        $url2 .= "/?__a=1";
        echo "{$url2}\n";
        $json2 = (object) json_decode(file_get_contents($url2));
        foreach($json2->{'graphql'}->shortcode_media->owner->full_name as $a){
            echo "{$a}\n";
            fwrite($file,$a);
            fwrite($file,"\n");
   
        }

    }

    fclose($file);
    // Deben modificar la variable $URL y acceder correctamente a ella
    if(!$json->{'graphql'}->hashtag->edge_hashtag_to_media->page_info->has_next_page) break;
    $url = $baseUrl.'&max_id='.$json->{'graphql'}->hashtag->edge_hashtag_to_media->page_info->end_cursor;
}


Saludosssssssssss espero me puedan ayudar :D
#3
Dudas y pedidos generales / Scraping Selenium
Septiembre 16, 2019, 10:28:26 AM
Hola que tal Fanaticos del Web Scraping !!!!!!!! seguimos con la saga de preguntas para que todos aprendamos. Quiero saber si existe la posibilidad de detectar un idioma... a que voy con esto? haciendo scraping en redes como intagram... voy al post de una persona... puedo detectar en que idioma hablan ? si es si ... como ?
#4
Hola que tal comunidad !!! como estan ?
bueno tengo un problema con un escraping que quiero hacer, ya sea con selenium o cualquier otro medio . El tema es asi.. mi tactica anteriormente era , ver como carga url segun sus diferentes paginas y luego una vez tengo todas las paginas que quiero escribía un codigo para extraer toda la data de cada pagina.
Resulta quiero sacar unos datos de esta pagina "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" para realizar unas metricas. Me gustaria pinchar en 'Mortgage Registration' y cambiarlo a 'Sale' y luego...día por día (desde el 2005) hasta hoy obtener todos los datos de 'Lands Transactions' , 'Buildings transactions', 'Units Transactions' de cada día. El tema es que como verán si pinchan en un dia... luego en el siguiente... la url no cambia !! Nose ni por donde empezar.
#5
Hola que tal comunidad !!! como estan ?
bueno tengo un problema con un escraping que quiero hacer, ya sea con selenium o cualquier otro medio . El tema es asi.. mi tactica anteriormente era , ver como carga url segun sus diferentes paginas y luego una vez tengo todas las paginas que quiero escribía un codigo para extraer toda la data de cada pagina.
Resulta quiero sacar unos datos de esta pagina "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" para realizar unas metricas. Me gustaria pinchar en 'Mortgage Registration' y cambiarlo a 'Sale' y luego...día por día (desde el 2005) hasta hoy obtener todos los datos de 'Lands Transactions' , 'Buildings transactions', 'Units Transactions' de cada día. El tema es que como verán si pinchan en un dia... luego en el siguiente... la url no cambia !! Nose ni por donde empezar.
#6
Dudas y pedidos generales / Scrapy
Julio 01, 2019, 04:52:09 AM
Hola que tal todos como estan?
estoy a full con el tema del scrapy y queria saber que tan real puede ser crean un scraper que capte info en el momento con ayuda de machine learning ?
por ahi con un ejemplo queda mas claro, imaginen poder crear un algoritmo de machine learning que permita detectar todas las personas que estan hablando de tal tema (ejemplo futbol) en la red. Y que por ejemplo si un usuario lo publica en facebook me llegue una notificacion con su nombre. Se me ocurre que podria ser con Selenium... pero el change de pagina tardaria mucho por lo que no me avisaria en el momento.
gracias
#7
Como les va a todos !!!!!!! ???? espero que super bien.
Hace unos dias estoy luchando con un scraper que quiero realizar a la siguiente pagina:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
mi idea es poder entrar a cada una de las casas y extraer informacion de estas, haciendo un scraping vertical y horizontal (todas las casas de la pagina, hasta la pagina 10... por lo que si en una pagina hay 30 casas... seria un total de 300 casas a escrapear).
He comenzado utilizando selenium , luego al darme cuenta de que tarda muchiiisimooo en abrir la pagina, sacar los datos, cerrar la pagina y hacer esto con todos los links.. he decidido migrar a scrapy.. este funciona rapido, el problema es que nose por que funciona como quiere jejeje. El codigo no me esta tomando las casas en orden (comenzando desde arriba hasta la de mas abajo) ni tampoco me toma todas las casas de la pagina. Con selenium lo bueno es que podia tomar datos como el mail y el telefono. En Scrapy tambien esta en un " </script>,<script> window.propertyfinder.settings.moreProperties" abajo de todo ... pero nose como sacarlo de ahi... y otra cosa que me gustaria mucho es poder sacar la info del grafico
les paso el codigo para que lo puedan chequear. Creo que estoy haciendo algo mal en las reglas.
muchisimas gracias a todos


Código: php
from scrapy.item import Field,Item 
from scrapy.spiders import CrawlSpider,Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.loader import ItemLoader
from scrapy.loader.processors import MapCompose


class PropietiItem(Item):
    titulo=Field()
    tipo= Field()
    reference=Field()
    agente= Field()
    company=Field()
    orn=Field()
    brn=Field()
    precio=Field()
    tipodepropiedad=Field()
    trakheesi=Field()
    bedrooms=Field()
    bathrooms=Field()
    furnishings=Field()
    area=Field()
    amenities=Field()
    fecha=Field()
    descripcion=Field()
    trendsandprice=Field()
    averagerent=Field()
    averagesize=Field()
    script=Field()
    grafico=Field()
    telefono=Field()
    mail=Field()






class PropietiCrawler(CrawlSpider):
    name= "MiPrimerCrawler"
    start_urls= ['https://www.propertyfinder.ae/en/search?c=2&l=1&ob=nd&page=1']
    allowed_domains= ['propertyfinder.ae']

    rules= (
        Rule(LinkExtractor(restrict_xpaths=('//a [@class="pagination__link pagination__link--next"]')),follow=True),
        Rule(LinkExtractor(restrict_xpaths=('//div [@class="card-list__item"]//a [@class="card card--clickable"]')),follow=True,callback= 'parse_items'),
    )

    def parse_items(self,response):
        item= ItemLoader(PropietiItem(),response)
        item.add_xpath('titulo','/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div/h1/text()')
        item.add_xpath('tipo','/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div/div/h2/text()')
        item.add_xpath('reference','/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div/div/div/strong/text()')
        item.add_xpath('agente','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/div[2]/div[1]/div[2]/div/text()')
        item.add_xpath('company','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/div[2]/div[2]/div[2]/text()')
        item.add_xpath('orn','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/div[2]/div[3]/div/text()')
        item.add_xpath('brn','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/div[2]/div[4]/div/text()')
        item.add_xpath('precio','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div/div/div[1]/div[2]/div/div/span[1]/text()')
        item.add_xpath('tipodepropiedad','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div/div/div[2]/div[2]/text()')
        item.add_xpath('trakheesi','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div/div/div[4]/div[2]/text()')
        item.add_xpath('bedrooms','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div/div/div[5]/div[2]/text()')
        item.add_xpath('bathrooms','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div/div/div[6]/div[2]/text()')
        item.add_xpath('furnishings','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div/div/div[7]/div[2]/text()')
        item.add_xpath('area','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div/div/div[8]/div[2]/text()')
        item.add_xpath('amenities','//div [@class="amenities__content"]/text()')
        item.add_xpath('fecha','//div [@class="last-update"]/text()')
        item.add_xpath('descripcion','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[4]/text()')
        item.add_xpath('trendsandprice','//span [@class="market-trends__sub-heading-value"]/text()')
        item.add_xpath('averagerent','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[8]/div/div[3]/div[1]/div[1]/div[2]/strong/text()')
        item.add_xpath('averagesize','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[8]/div/div[3]/div[1]/div[2]/div[2]/strong/text()')
        item.add_xpath('script','/html/body/script[5]/text()')
        item.add_xpath('grafico','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[1]/div[8]/div/div[2]/div/div/div/svg/g[12]/g/text()')
        item.add_xpath('telefono','/html/body/main/div[1]/div/div[2]/div[2]/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div/div/div/span/span[2]/text()')
        yield item.load_item()
   
   
#8
Dudas y pedidos generales / Ayuda con Scraping
Mayo 23, 2019, 04:54:57 PM
Hola que tal gente como estas? estoy en la duda, sigo aprendiendo scraping de a poco. Intente hacer scraping a diferentes paginas, siguiendo el post de undercode (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) donde explica como extraer los mensajes.. habla de ir al codigo fuente de la pagina... a la parte de 'javascript' 'windows shared_data' .. y ese objeto en javascript y lo pasa a un beautify para trabajarlo como json....
Por otro lado estube haciendo scraping a otras paginas donde accedia a los datos mediante Networks (que si estoy acertado, ahi te muestra como se van cargando las pagina), una vez alli voy a los headers => request URL y me aparecia algo como lo siguiente (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) y accedia a los datos desde alli.

bueno ahora bien se viene la pregunta... no entiendo por que en instegram no logro acceder por networks.... osea se supone que el texto de la gente se carga en un momento en la pagina no ? intento ingresar y me aparece esto . (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) por que??? por favor si alguien me ayuda o me explica (mejor) como es que funciona se lo super agradeceria. son unos genios todos ! .

Plus: si tambien tienen ganas de explicarme si es posible utilizar Selenium pero cambiando de proxies (que no sea tor por que algunas paginas no las toma) se los agradeceria tambien !  Mil puntoss al que ayudaaaaa ! jajajaja
#9
Hola que tal?
les vengo a contar sobre mi problema, hace un mes intento intento intento y no puedo hacer scraping a una url. Mi idea es inventar un sistema de ir cambiando los proxies y cuando te bajan uno.. cambiar al otro y seguir con el scraping (o cualquier otra forma que permita hacer scraping ilimitado) . Es importante que si alguien me ayuda( ojala si ) intente hacerlo con el link que pase reiteradas veces a ver si funciona, por que me a pasado que proponen otros links y no la url que he mandado.
en este scrip buscamos los proxies....

Código: php
import requests
from bs4 import BeautifulSoup
sourceProxy = requests.get('https://free-proxy-list.net/', headers={'User-Agent':'Mozilla/5.0'})
bSoup = BeautifulSoup(sourceProxy.text,"lxml")
for items in bSoup.select("tbody tr"):
    proxy_list = ':'.join([item.text for item in items.select("td")[:2]])
    print(proxy_list)


hasta ahi muy lindo todo... ahora vamos a pegarle a la url...
Código: php

import requests

validador = "https://www.espanol.skyscanner.com/g/browseservice/dataservices/browse/v3/bvweb/AR/ARS/es-MX/destinations/es/ar/2019-06-22/?profile=minimalcityrollupwithnamesv2&include=image;holiday&apikey=8aa374f4e28e4664bf268f850f767535"

proxy = '179.124.240.199:40524' # se podria hacer la iteracion de arriba pero vamos a probar con esta..
print("Request: ")
try:
    response = requests.get(validador,proxies={"http": proxy, "https": proxy})
    print(response.json())
except:
    print("Connnection error")


una de las respuestas que me da
{'redirect_to': '/sttc/px/captcha/index.html?url=Lw==&uuid=ace23420-70e8-11e9-9e16-99c145471a63&vid=', 'reason': 'blocked'}

por favor ayuda :(
#10
Hola que tal , ya hace dias estoy con esto y no hay caso nose como hacerlo.
intento hacer requests a la siguiente pagina pero siempre despues de un tiempo me bloquean el get... me gustaria que cuando sea asi pueda cambiar de proxie y seguir escrapeando . Se que ustedes son mi salvacion y confio en este FORO !!!!!!!! nose si esta bien usar proxies y a la vez user agent por favor ayuda

Código: php
import requests
from bs4 import BeautifulSoup
from random import choice
import random </code>

def get_proxy():
    proxiDomain= 'https://free-proxy-list.net/'
    r = requests.get(proxiDomain)
    soup= BeautifulSoup(r.content,'html.parser')
    table=soup.find('table',{'id':'proxylisttable'})
    nuevo=[]
    for row in table.find_all('tr'):
        columns= row.find_all('td')
        try:
            nuevo.append({'https':("%s:%s" %(columns[0].get_text(),columns[1].get_text()))})
        except:
             pass
    return choice(nuevo)

proxy=get_proxy()
desktop_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
                 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14',
                 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
                 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
                 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36']


url = "https://www.espanol.skyscanner.com/g/browseservice/dataservices/browse/v3/bvweb/AR/ARS/es-MX/destinations/ar/anywhere/2019-07-10/?profile=minimalcityrollupwithnamesv2&include=image;holiday&apikey=8aa374f4e28e4664bf268f850f767535"

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
headers = {
    "referer": "https://www.espanol.skyscanner.com/transporte/vuelos-desde/buea/?adults=1&children=0&adultsv2=1&childrenv2=&infants=0&cabinclass=economy&rtn=0&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false&ref=home",
    "user-agent" :random.choice(desktop_agents),
    "x-requested-with": "XMLHttpRequest"}

response = requests.get( url,headers=headers,proxies=proxy)

if response.status_code == 200:
    print ("ok")
else:
    print ("error 400")
print(response.json())
#11
Hola que tal? como estan ? me quiero introducir al hacking etico. Como puedo hacer ? pero desde 0 y explicado para un Navo con ganas de aprender (como yo) . El problema es que veo tutoriales y todos explican desde su perspectiva y conocimiento (por lo que piensan que todos tenemos ese conocimiento y se saltean varias cosas) . Le estoy metiendo mucha voluntad , me baje el kali, algunos comandos muy simples. Pero nada en accion. Muchas gracias
#12
Hola que tal? como están? mi idea es poder realizar un scraping a skycanner. Tengo los siguientes problemas: cuando intento hacerles muchas peticiones este me bloquea. Nose muy bien como poder hacer para cambiar la vpn cada vez que haga una petición (otra de las cosas que se me había ocurrido es hacerlo mediante TOR browser, pero nose si es que hice el código mal o que pero tampoco me deja) les envió el codigo para que vean y me digan que piensan, estoy utilizando python3 con un sistema operativo linux ubuntu y lo corro en VS (es bueno aclarar todo los detalles):

Código: python
lugarDeseado="Israel"
paises=['al',
'de',
'ad',
'at',
'be',
'by',
'ba',
'bg',
'hr',
'dk',
'sk',
'si',
'es',
'ee',
'ru',
'fi',
'fr',
'gi',
'gr',
'gg',
'hu',
'ie',
'im',
'is',
'ax',
'fo',
'it',
'je',
'lv',
'li',
'lt',
'lu',
'mk',
'mt',
'md',
'mc',
'me',
'no',
'nl',
'pl',
'pt',
'uk',
'cz',
'ro',
'sm',
'va',
'rs',
'se',
'ch',
'sj',
'tr',
'ua']
import random
from lxml.html import fromstring
import requests
from itertools import cycle
import traceback


desktop_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
                 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14',
                 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
                 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
                 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
                 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0']



try:
    for i in range(len(paises)):
        ## json url ##
        url="https://www.espanol.skyscanner.com/g/browseservice/dataservices/browse/v3/bvweb/AR/ARS/es-MX/destinations/"+paises[i]+"/anywhere/anytime/?profile=minimalcityrollupwithnamesv2&include=image;holiday&apikey=8aa374f4e28e4664bf268f850f767535"
        print(url)
        headers = {
            "referer": "https://www.espanol.skyscanner.com/transporte/vuelos-desde/buea/?adults=1&children=0&adultsv2=1&childrenv2=&infants=0&cabinclass=economy&rtn=0&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false&ref=home",
            "user-agent" :random.choice(desktop_agents),
            "x-requested-with": "XMLHttpRequest"}

        response = requests.get(url,headers=headers)
        if response.status_code == 200:
            print ("ok")
        else:
            print ("error 400")
        data = response.json()
        try:
            for pais in data["PlacePrices"]:
                if pais.get('Name')== lugarDeseado:
                    dprice = pais.get("DirectPrice")
                    iprice = pais.get('IndirectPrice')

                    if dprice != None and iprice != None:
                        print(f"{pais['Id']}  {dprice} {iprice}  {pais['Name']} ")
                    # solo existe DirectPrice
                    elif dprice == None:
                        print(f"{pais['Id']}  {iprice:<10}  {pais['Name']} ")
                    # solo existe IndirectPrice
                    else:
                        print(f"{pais['Id']}  {dprice:<10}  {pais['Name']} ")
                else:
                    pass
        except:
            print("no")


    else:
        i=i+1
except:
    pass

perdon si es algo facil para ustedes, yo me estoy introduciendo y le estoy metiendo toda la voluntad del mundo. Si me pueden explicar como funciona el cambio de proxy o un browser con Tor tambien se los agradeceria . Obvio que si tienen alguna mejor sugerencia porfa expliquenla. Gracias