Scraping cambiar proxys o algo, por favor ayuda

Iniciado por lemos.ema, Mayo 03, 2019, 11:28:03 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 03, 2019, 11:28:03 PM Ultima modificación: Mayo 04, 2019, 12:30:14 AM por Gabriela
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())

porque mejor no usas tor services?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
porque mejor no usas tor services?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Como estas??? muchisimas gracias por responder , realmente estoy desesperado por que no lo puedo lograr, necesito ayudaa de todos los que puedan aportar. Intento con tor pero el servidor de la web me bloquea . Ya no se que hacer :(

Mayo 05, 2019, 10:39:04 AM #3 Ultima modificación: Mayo 05, 2019, 11:12:58 AM por hielasangre
 muy bien gracias por preguntar, en un par de horas me siento en la pc de nuevo y te doy una mano con eso a ver si lo podemos sacar, un saludo.

edito:
Creo que por aqui va el codigo, ahora no tenes excusa para adaptarlo ;)


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)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
muy bien gracias por preguntar, en un par de horas me siento en la pc de nuevo y te doy una mano con eso a ver si lo podemos sacar, un saludo.

ufff te lo super agradeceria, sos un genio ! :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
muy bien gracias por preguntar, en un par de horas me siento en la pc de nuevo y te doy una mano con eso a ver si lo podemos sacar, un saludo.

ufff te lo super agradeceria, sos un genio ! :)

El script no obtenía los proxies, ya modifique una parte

Código: php

import requests

validador = 'https://httpbin.org/ip'
proxy = '179.124.240.199:40524' # ingresa una iteracion para que vaya recorriendo los proxies a medida que les da timeout
print("Request: ")
try:
    response = requests.get(validador,proxies={"http": proxy, "https": proxy})
    print(response.json())
except:
    print("Connnection error")


esa es la validación del proxy, si no esta disponible te dira erorr de conexion
ya creo que podes seguir ahciendolo vos

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
muy bien gracias por preguntar, en un par de horas me siento en la pc de nuevo y te doy una mano con eso a ver si lo podemos sacar, un saludo.

ufff te lo super agradeceria, sos un genio ! :)

El script no obtenía los proxies, ya modifique una parte

Código: php

import requests

validador = 'https://httpbin.org/ip'
proxy = '179.124.240.199:40524' # ingresa una iteracion para que vaya recorriendo los proxies a medida que les da timeout
print("Request: ")
try:
    response = requests.get(validador,proxies={"http": proxy, "https": proxy})
    print(response.json())
except:
    print("Connnection error")


esa es la validación del proxy, si no esta disponible te dira erorr de conexion
ya creo que podes seguir ahciendolo vos

como estas ?? primero que nada te super agradezco por estar ayudandome. Mira te cuento entente hacerlo como decis, me habia armado tambien un requests de proxies (aunque el tuyo es mejor jejee) y despues lo intento usar pero me aparece como blocked .... mira intenta vos con la siguiente
validador = "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta"
si lo logras la verdad sos un crack yo estoy a punto de tirar la toalla :(

Es que creo que no estas entiendo bien las partes del script:

Esto es una parte:

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)

Esa primera parte se encarga de obtener los proxys de la web y mostrarlos por pantalla.

y esta es otra

Código: php

import requests

validador = 'https://httpbin.org/ip'
proxy = '179.124.240.199:40524' # ingresa una iteracion para que vaya recorriendo los proxies a medida que les da timeout
print("Request: ")
try:
    response = requests.get(validador,proxies={"http": proxy, "https": proxy})
    print(response.json())
except:
    print("Connnection error")

esta otra parte en si lo que hace eso es al proxy obtenido comprueba que este disponible (que funcione)

con esos dos scripts deberias combinarlos y hacer el request a la web que buscas...
Por ahora no puedo ayudarte más pero no deberia ser impedimento para que lo termines solo, no se cuales sean tus conocimientos de python, pero te recomendaria que le sigas metiendo cabeza porque ya esta casi resuelto.
Cuando tenga tiempo veo si te puedo dar otra mano. El tema es que tampoco voy a hacer todo por vos :P 

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Es que creo que no estas entiendo bien las partes del script:

Esto es una parte:

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)

Esa primera parte se encarga de obtener los proxys de la web y mostrarlos por pantalla.

y esta es otra

Código: php

import requests

validador = 'https://httpbin.org/ip'
proxy = '179.124.240.199:40524' # ingresa una iteracion para que vaya recorriendo los proxies a medida que les da timeout
print("Request: ")
try:
    response = requests.get(validador,proxies={"http": proxy, "https": proxy})
    print(response.json())
except:
    print("Connnection error")

esta otra parte en si lo que hace eso es al proxy obtenido comprueba que este disponible (que funcione)

con esos dos scripts deberias combinarlos y hacer el request a la web que buscas...
Por ahora no puedo ayudarte más pero no deberia ser impedimento para que lo termines solo, no se cuales sean tus conocimientos de python, pero te recomendaria que le sigas metiendo cabeza porque ya esta casi resuelto.
Cuando tenga tiempo veo si te puedo dar otra mano. El tema es que tampoco voy a hacer todo por vos :P

Hola que tal ? mil perdones en tardar en contestar, sinceramente no lo quise hacer por no sentirme invasivo y preguntarte. Lo he intentado todo este tiempo , pero por alguna razon no me deja , he hecho una iteraccion para que me vaya tomando los proxy pero no hay caso. No se como hacerlo (y sinceramente antes de tirar la toalla prefiero sacarme la timides y preguntarte, asi se aprende creo yo ) el error que me da es import requests
{'redirect_to': '/sttc/px/captcha/index.html?url=Lw==&uuid=ace23420-70e8-11e9-9e16-99c145471a63&vid=', 'reason': 'blocked'}
nose si tu lo haz intentado con el link que he enviado en la pagina, pero con ese link no me funciona , se que parezco molesto pero solo quiero aprender y llegar a saber lo que vos sabes