taller-web-scraping-hirikilabs:jakdojade
¡Esta es una revisión vieja del documento!
JAK DOJADE
Descargar el tiempo necesario para ir de un punto de la ciudad a otro. Caso de estudio: Varsovia.
La web muestra una pantalla estática mientras calcula el camino más rápido.
- La información que recoge el scrapping es de esa pantalla, y no del resultado posterior
- Hemos intentado la función sleep pero no funciona
- Postman parece no solucionar el problema tampoco (AUTH_EMPTY_USER)
- Postman: vemos que algunos parámetros del Header son necesarios, intentamos ver cuales
- Tras recrear los headers copiando los parámetros necesarios, conseguimos un JSON
Código:
import csv, time, scrapy, json from urllib.request import Request, urlopen from bs4 import BeautifulSoup outputpath = 'C:/DWG/jakdojade.csv' with open(outputpath, 'w') as outfile: writer = csv.writer(outfile) latMin = 52.1 latMax = 52.3 lonMin = 20.85 lonMax = 21.15 for counter in range(0,11): lat1 = (latMin + latMax)/2 lon1 = (lonMin + lonMax)/2 lat2 = latMin + counter*(latMax-latMin)/10 lon2 = lonMin + counter*(lonMax-lonMin)/10 url = "https://jakdojade.pl/api/web/v1/routes?alt=0&apv=&aro=1&fc="+str(lat2)+":"+str(lon2)+"&ft=LOCATION_TYPE_COORDINATE&location=43.31676:-1.97569&rc=3®ion_symbol=WARSZAWA&ri=1&rt=false&t=optimal&tc="+str(lat1)+":"+str(lon1)+"&time=07.02.18+16:58&tt=LOCATION_TYPE_COORDINATE" headers = { 'X-jd-timestamp': '1518024097', 'X-jd-param-profile-login':'jda-39b3aa63-842f-4bd4-9e4e-aac814a834ddQi915f1MstaImZf5e45d', 'X-jd-sign':'a2uz-lMLTOctScjZaHjEP8juZZn1JXNikJb5HyeqJERxOX__ZOE800wxpMnD1qYgl9F0MyFyvrQqga5FZH_2dQ', 'X-jd-security-version':'2', 'Referer':'https://jakdojade.pl/warszawa/trasa/z--undefined--do--undefined?tc='+str(lat1)+':'+str(lon1)+'&fc='+str(lat2)+':'+str(lon2)+'&ft=LOCATION_TYPE_COORDINATE&tt=LOCATION_TYPE_COORDINATE&d=07.02.18&h=16:58&aro=1&t=1&rc=3&ri=1&r=0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' } print(url+"\n\n") print('https://jakdojade.pl/warszawa/trasa/z--undefined--do--undefined?tc='+str(lat1)+':'+str(lon1)+'&fc='+str(lat2)+':'+str(lon2)+'&ft=LOCATION_TYPE_COORDINATE&tt=LOCATION_TYPE_COORDINATE&d=07.02.18&h=16:58&aro=1&t=1&rc=3&ri=1&r=0\n\n') # Get URL response = Request(url, headers=headers) #time.sleep(1) try: pagedata = urlopen(response) html = pagedata.read() myJson = json.loads(html) allRoutes = myJson['routes'] lne = str(lon1)+","+str(lat1)+","+str(lon2)+","+str(lat2) for i in range(0, len(allRoutes)): subRoutes = allRoutes[i]['routeParts'] lne = lne + ";" + subRoutes[0]['routePartStartDepartureTimeSchedule'] + "," + subRoutes[len(subRoutes)-1]['routePartTargetArrivalTimeSchedule'] #print(" start: " + subRoutes[0]['routePartStartDepartureTimeSchedule']) #print(" end: " + subRoutes[len(subRoutes)-1]['routePartTargetArrivalTimeSchedule']) print(lne) writer.writerow([lne]) except Exception as e: print('Error parseando web')
contacto:
Jacek: j.markusiewicz@gmail.com Ander: andergortazar@gmail.com
taller-web-scraping-hirikilabs/jakdojade.1518029130.txt.gz · Última modificación: 2018/02/07 19:45 por derzu