#!/usr/bin/env python3 from os import path from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys import time from multiprocessing import Process, SimpleQueue q = SimpleQueue() def setup_driver(): ff = False if ff: driver = webdriver.Firefox() else: chromepath = "/usr/lib/chromium/chromedriver" if path.isfile("/usr/bin/chromedriver"): chromepath = "/usr/bin/chromedriver" driver = webdriver.Chrome(chromepath) driver.set_window_size(1366, 768) return driver def despegar(): driver = setup_driver() WEB = 'https://www.despegar.com.ar/shop/flights/results/roundtrip/BUE/SCL/2017-12-15/2018-01-17/2/0/0?from=SB' driver.get(WEB) time.sleep(10) css = ".fare-price .amount.price-amount" prices = driver.find_elements_by_css_selector(css) ret = set() for p in prices: # print(p.text) ret.add(int(p.text.replace(".", ""))) q.put( { 'despegar': sorted(list(ret)) } ) driver.close() def almundo(): driver = setup_driver() WEB = 'https://almundo.com.ar/flights/results?from=BUE,SCL&to=SCL,BUE&date=2017-12-15,2018-01-17&adults=2#stops=0' driver.get(WEB) time.sleep(10) css = ".bigger" prices = driver.find_elements_by_css_selector(css) ret = set() for p in prices: # print(p.text) ret.add(int(p.text.replace(".", ""))) q.put( { 'almundo': sorted(list(ret)) } ) driver.close() def avantrip(): driver = setup_driver() WEB = 'http://www.avantrip.com/vuelos/santiago-de-chile-desde-buenos-aires?av-seleccion-grupo=on&isMulticity=false&destinationFromId%5B0%5D=BUE&round_trip=&destinationToId%5B0%5D=SCL&dateFrom%5B0%5D=15-12-2017&dateTo=17-01-2018&adults=2&children=0&babies=0&flightClass=NMO.GBL.SCL.ECO&hostname=www.avantrip.com' driver.get(WEB) time.sleep(10) # time.sleep(5) css = ".total[data-original]" prices = driver.find_elements_by_css_selector(css) ret = set() for p in prices: v = p.get_attribute("data-original").replace(".", "") # print(v) ret.add(int(v)) q.put( { 'avantrip': sorted(list(ret)) } ) driver.close() if __name__ == '__main__': de = Process(target=despegar) av = Process(target=avantrip) al = Process(target=almundo) de.start() av.start() al.start() de.join() av.join() al.join() out = {} print("----") while not q.empty(): out.update(q.get()) from pprint import pprint pprint(out) print("====")