Получите последние данные о карте * stati c с помощью скрапа - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь получить координаты (широта, долгота) из карты состояния c, встроенной в веб-сайт с использованием Scrapy. Когда я проверяю элемент, я нашел координаты прямо здесь , но я не знаю, как его получить

Я использовал response.xpath ('//img[@id="static-map"]/@src').extract()

и получаю

'//maps.google.com/maps/api/staticmap?center=-12.119641500000000,-77.011014800000000&zoom=16&markers=-12.119641500000000,-77.011014800000000&key=AIzaSyB42QzVvI4Fz1sQMlJBHemUlH5zYH0VMIE&size=780x456&sensor=true&scale=2&signature=dl39BZVBkcNsfHm0FjeNzKw1puU='

И я хочу получить в двух разных столбцах лат и долг (-12.11964, -77.011014)

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Вы можете разобрать URL

import urllib.parse

url = '//maps.google.com/maps/api/staticmap?center=-12.119641500000000,-77.011014800000000&zoom=16&markers=-12.119641500000000,-77.011014800000000&key=AIzaSyB42QzVvI4Fz1sQMlJBHemUlH5zYH0VMIE&size=780x456&sensor=true&scale=2&signature=dl39BZVBkcNsfHm0FjeNzKw1puU='

query = urllib.parse.urlsplit(url).query
data = urllib.parse.parse_qs(query)
lat, lon = eval(data['center'][0])
print(lat, lon)

Или вы можете рассматривать его как обычный текст и split() это

url = '//maps.google.com/maps/api/staticmap?center=-12.119641500000000,-77.011014800000000&zoom=16&markers=-12.119641500000000,-77.011014800000000&key=AIzaSyB42QzVvI4Fz1sQMlJBHemUlH5zYH0VMIE&size=780x456&sensor=true&scale=2&signature=dl39BZVBkcNsfHm0FjeNzKw1puU='

lat, lon = eval(url.split("center=")[1].split('&')[0])
print(lat, lon)
1 голос
/ 09 апреля 2020

С XPath вы можете использовать функции подстрок (и * 1 для удаления конечных нулей):

lat = response.xpath ('substring-after(substring-before(//img[@id="static-map"]/@src,","),"=")*1').extract()
lon = response.xpath ('substring-after(substring-before(//img[@id="static-map"]/@src,"&"),",")*1').extract()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...