Herramientas de usuario

Herramientas del sitio


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&region_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