Получить широту и долготу из url

С помощью xpath я смог получить URL-адрес, содержащий широту и долготу, но мне нужно, чтобы эти значения отображались отдельно следующим образом:

широта = -34,552654847695510 долгота = -58.457549057672110

<div class="article-map" id="article-map">
<img id="static-map" src="//maps.google.com/maps/api/staticmap?center=-34.552654847695510,-58.457549057672110&amp;zoom=16&amp;markers=-34.552654847695510,-58.457549057672110&amp;channel=ZP&amp;size=780x456&amp;sensor=true&amp;scale=2&amp;key=AIzaSyDuxqN04nAj6aHygffqUpehsbMFbxEZX90&amp;signature=W-cOkT98ssMPpXbZbU3jil5xNes=" class="static-map">
</div>    


response.xpath ('// div [@ id = "article-map"] / img'). extract ()

['<img id = "static-map" src = "// maps.google.com/maps/api/staticmap?center=-34.552654847695510,-58.457549057672110&amp;zoom=16&amp;markers=-34.552654847695510,-58.457549057672110&amp; channel = ZP & amp; size = 780x456 & amp; sensor = true & amp; scale = 2 & amp; key = AIzaSyDuxqN04nAj6aHygffqUpehsbMFbxEZX90 & signature = W-cOkT98ssMPpXbZbU3jil5xNes = "class =" static-map "> ']
0
0
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте, например: response.css('#article-map img::attr(src)').re(r'markers=([-\d\.]+),([-\d\.]+)')

Или а. получить URL как response.css('#article-map img::attr(src)').get() б. извлеките параметр markers или center через from w3lib.url import url_query_parameter, а затем примените регулярное выражение.

Но первый вариант выглядит намного короче и проще.

использовать модуль синтаксического анализа URL-адресов удобно и точно:

from urllib.parse import urlparse, parse_qs

img_url_string = Selector(text=body).xpath('//img[@id="static-map"]/@src').extract_first()

url_data = urlparse(img_url_string, scheme='https')

qs = url_data.query
parse_qs(qs)['center']
# output ['-34.552654847695510,-58.457549057672110']

Другие вопросы по теме