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: por derzu