Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/165: Рейтинг темы: голосов - 165, средняя оценка - 4.51
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
1

Как написать парсер Яндекс-карт?

10.05.2018, 10:09. Показов 32798. Ответов 66
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как вообще возможно написать парсер яндекс.карт на python?
или может другие языки нужно использовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2018, 10:09
Ответы с готовыми решениями:

Парсер яндекс карт магазины по регионам
Как собрать строительные магазины по регионам? В частности: - Брестская область, Гомельская...

Как добавить карту из конструктора карт Яндекс?
ДД. Помогите пжлс. Хочу добавить карту участком медицинской организации. Создал ее в Конструкторе...

Подскажите как Вывести массив для Яндекс.Карт
Есть таблица содержащая адрес объекта и название. Судя по описанию на яндекс.картах есть такая...

Написать функцию случайного выбора 6 карт из колоды 36 карт, используя структуры. с++
Вот начало кода #include <iostream> #include <ctime> using namespace std; struct card {...

JS и API яндекс карт
всем привет. есть база данных mysql, там есть поля координаты, ссылка. мне надо поставить метки на...

66
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
18.10.2019, 23:44  [ТС] 41
Author24 — интернет-сервис помощи студентам
в общем оказалось, что за "контейнер" с нужной информацией отвечает этот div

<div class="search-snippet-view__body">

теперь его надо выдрать
из всей простыни, а их там, согласно грепу около 1000 штук... (не в том файле, что прикреплял)

Добавлено через 2 часа 14 минут
так, ну, значит, достал...

осталось подтянуть координаты
и будет хорошо

Севорехи
:100m:ул. Адмирала Октябрьского, 20, Рынок Чайка
Меркурий
:100m:ул. Гоголя, 28
ПУД:100m:просп. Генерала Острякова, 149А
0
931 / 692 / 270
Регистрация: 10.12.2016
Сообщений: 1,701
18.10.2019, 23:59 42
распарсить можно, но сомневаюсь что это тебе поможет. апи изучай
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from lxml import html,etree
import json
 
def flatten_json(obj):
    out = []
    def flatten(obj,keys='[',delim='][',):
        if obj and type(obj) is dict:
            for key in obj:
                flatten(obj[key], keys + repr(key) + delim)
        elif obj and (type(obj) is list or type(obj) is tuple):
            for  i,item in enumerate(obj):
                flatten(item, keys + repr(i) + delim)
        else:
            out.append([keys[:-1],obj])
    flatten(obj)
    return out
 
tree = html.parse('output.txt')
for node in tree.xpath("//script"):
    if 'application/json' in node.attrib['type']:
        d = json.loads(node.text)
        for k,v in flatten_json(d):
            if 'name' in k or 'address' in k:print(k,v)
1
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
19.10.2019, 10:59  [ТС] 43
vic5710, приветствую!

Спасибо за участие в обсуждении!

апи опасная штука =( Пишут, даже заблокировать могут



я пошел
немножко другим путем, вроде все получается, осталось по-модному спарсить отдельную страницу =)
не, через try:

https://yandex.ru/maps/org/sevorekhi/31318556219/


Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import requests
from bs4 import BeautifulSoup
import time
import json
 
def get_url(url):
    r = requests.get(url)
    get_soup = BeautifulSoup(r.content, 'lxml')
    return get_soup
    
 
def get_location(x):
    base_url = 'https://yandex.ru'
    object_href = x.find('a').get('href')
    url = base_url + object_href
 
 
 
    # title = x.find('div', class_='search-business-snippet-view__title').text
    # addrs = x.find('div', class_='search-business-snippet-view__address').text
    # add_list = title + ' ' + addrs
    # print(add_list)
 
 
def main():
 
    with open('output.txt', 'r') as page:
        content = page.read()
        soup = BeautifulSoup(content, 'lxml')
        block = soup.findAll('div', class_='search-snippet-view__body')
        i = 0
        for x in block:
            get_location(x)
            print(get_location)
 
if __name__ == '__main__':
    main()
0
1042 / 577 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
19.10.2019, 11:07 44
IRIP, скорее за парсер забанят, чем за апи.
0
931 / 692 / 270
Регистрация: 10.12.2016
Сообщений: 1,701
19.10.2019, 12:06 45
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
скорее за парсер забанят, чем за апи.
ну это вряд ли, парсит он результат запроса на своем компе
можно так для данного случая
Python
1
2
3
4
5
6
7
8
9
10
11
tree = html.parse('out.html')
for node in tree.xpath("//script"):
    if 'application/json' in node.attrib['type']:
        d = json.loads(node.text)
        for i,item in enumerate(d['searchPreloadedResults']['items']):
            addr = item.get('address')
            try:
                chain =  item.get('chain')['name']
            except:
                chain =  item.get('chain','?')
            print(i,addr,chain)
но решение костыльное, я бы поискал адресный справочник в сети, а не ЯКарты

Добавлено через 12 минут
здесь хотя бы
https://bigspr.ru/sevastopol/magaziny-produktov/
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
19.10.2019, 12:28  [ТС] 46
Цитата Сообщение от vic5710 Посмотреть сообщение
я бы поискал адресный справочник в сети, а не ЯКарты
базы данных, актуальной, по объектам с продажей продуктов питания - в сети нет
есть в целом, база - магазинов, где продают все - и одежду и запчасти, и продукты

здесь, считай за пару часов - можно получать вполне нормальный результат
0
1042 / 577 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
19.10.2019, 12:52 47
Цитата Сообщение от vic5710 Посмотреть сообщение
ну это вряд ли, парсит он результат запроса на своем компе
а запросы он не на их сервак лупить будет?
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
19.10.2019, 13:44  [ТС] 48
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
а запросы он не на их сервак лупить будет?
Выкачивается одна база, а затем, с определенным интервалом, обычно в 1-3 секунды, будет запрашиваться каждая страница магазина

она в своем коде имеет следующее:

содержание страницы

[6,20]},"pht":{"version":"0.28.1-0.1.3.5-0.2019.10.14.17.07.44","zoomRange":[2,19]},"trf":{"version":"1571480790","zoomRange":[1,18]},"carparks":{"version":"20191018-080239","zoomRange":[10,19]},"mrc":{"version":"19.10.19-25202268","zoomRange":[10,20]}},"orgpagePreloadedResults":{"requestId":"1571480875510693-1144088063-sas1-5767","requestSerpId":"1571480875510693-1144088063-sas1-5767","requestContext":"ZAAAAAgBEAAaKAoSCQAAAAAAkHZAEQAAAAAAoGZAEhIJAAAAAAAA8L8R AAAAAAAA8L8iAQEoFDAAOMro5eHm+/P2gAFA/v//////////AUgBVc3MzD5YAGoAcACdAc3MTD2gAQCoAQA=","requestQuery":"empty","requestCorrectedQu ery":"empty","requestBounds":[[37.048427,55.43644866],[38.175903,56.04690174]],"requestName":"","displayType":"multiple","totalResultCount":1,"items":[{"requestId":"1571480875510693-1144088063-sas1-5767","title":"Лидер","description":"просп. Генерала Острякова, 65А, Севастополь","address":"просп. Генерала Острякова, 65А, Севастополь","coordinates":[33.520742,44.575408],"bounds":[[33.5166365,44.57247343],[33.5248475,44.57834243]],"displayCoordinates":[33.520742,44.575408],"businessImages":{"logo":{"urlTemplate":"https://avatars.mds.yandex.net/get-altay/2006773/2a0000016b78e81c3383cb5c697738f42002/%s"}},"ratingData":{"ratingCount":203,"ratingValue":4,"reviewCount":65},"metro ":[],"stops":[{"id":"2133226368","name":"Магазин Океан","distance":"91 м","distanceValue":91.9838,"coordinates":[33.520431833,44.575077142],"type":"common"},{"id":"stop__10052491","name":"Улица Силаева","distance":"130 м","distanceValue":129.615,"coordinates":[33.52000742,44.576176342],"type":"common"},{"id":"stop__10052495","name":"Школа № 22","distance":"520 м","distanceValue":517.881,"coordinates":[33.521996,44.571203],"type":"common"},{"id":"stop__10143012","name":"Севгорэнерго","distance":"65 0 м","distanceValue":650.017,"coordinates":[33.516548,44.572086],"type":"common"}],"panorama":{"id":"1273698854_777678792_23_1555847235","direction":[120.8,10],"point":{"type":"Point","coordinates":[33.5204094623,44.5755500026]},"preview":"https://avatars.mds.yandex.net/get-altay/1491998/2a00000167a4acf93a3238ffe362a1156490/%s"},"photos":{"count":6,"urlTemplate":"https://avatars.mds.yandex.net/get-altay/1633254/2a000001687ac257c885439adaa89d89c192/%s","items":[{"link":[],"urlTemplate":"https://avatars.mds.yandex.net/get-altay/1633254/2a000001687ac257c885439adaa89d89c192/%s","alt":"супермаркет — Лидер — Севастополь, фото №1"},{"link":[],"urlTemplate":"https://avatars.mds.yandex.net/get-altay/1514203/2a000001687ac29b6e817cac9c921944403c/%s","alt":"супермаркет — Лидер — Севастополь, фото №2"},{"link":[],"urlTemplate":"https://avatars.mds.yandex.net/get-altay/1860543/2a0000016bbc1ed01a50c9d5cccb3234d02f/%s","alt":"супермаркет — Лидер — Севастополь, фото №3"},{"link":[],"urlTemplate":"https://avatars.mds.yandex.net/get-altay/1637232/2a0000016bbc1ecaef65e39ab1fc1c229643/%s","alt":"супермаркет — Лидер — Севастополь, фото №4"},{"link":[],"urlTemplate":"https://avatars.mds.yandex.net/get-altay/2094876/2a0000016bbc1ed0b7807c99927c1fd42b98/%s","alt":"супермаркет — Лидер — Севастополь, фото №5"}],"panoramas":[{"link":[{"type":"panorama","uri":"ymapslink://panorama?id=1273698945_777678829_23_1278472370\u0026span=90.0%2C45.0\u0026direct ion=121.3%2C10.0"}],"urlTemplate":"https://avatars.mds.yandex.net/get-altay/1491998/2a00000167a4acf93a3238ffe362a1156490/%s","alt":"Панорама супермаркет — Лидер — Севастополь, фото №1"}]},"subtitleItems":[{"type":"working_hours","text":"До 22:00","property":[{"key":"is_open","value":"1"},{"key":"short_text","value":"До 22:00"},{"key":"text","value":"Открыто до 22:00"}]},{"type":"rating","text":"8","property":[{"key":"value","value":"8"},{"key":"value_5","value":"4"}]}],"histogramData":{"wednesday":[0,0,0,0,0,0,0,0,0.004980138732436118,0.007517637991344044,0.00866781288907334,0. 009118396869627083,0.009723128001422898,0.010149997035631707,0.00945040611845615 6,0.009343688859903955,0.011312029406533468,0.01495227367048082,0.01719333610007 7075,0.016280310665797118,0.01363609414833699,0.008572953103693604,0,0],"sunday":[0,0,0,0,0,0,0,0,0.0032133752297385425,0.005288433034920258,0.00722120116203237,0 .008300231220726862,0.00928440149404162,0.009604553269698227,0.00895239224521254 5,0.008418805952451532,0.009651983162388095,0.011644038655362543,0.0123080571530 2069,0.011999762850536552,0.010908875318669591,0.006794332127823561,0,0],"friday":[0,0,0,0,0,0,0,0,0.004624414537262109,0.006746902235133693,0.007600640303551313,0 .008300231220726864,0.008478093318313867,0.008454378371968933,0.0088575324598328 1,0.0098654176794925,0.012379201992055493,0.016031303729175314,0.018023359222149 76,0.01619730835358985,0.012983933123851307,0.008086796703622457,0,0],"tuesday":[0,0,0,0,0,0,0,0,0.004553269698227308,0.0069603367522380975,0.008146084069484793, 0.007458350625481711,0.008240943854864529,0.008418805952451532,0.008750815201280 607,0.00931997391355902,0.010944447738186992,0.014205252860615402,0.016517460129 24646,0.016138020987727514,0.01367166656785439,0.008240943854864527,0,0],"monday":[0,0,0,0,0,0,0,0,0.004944566312918717,0.006699472342443825,0.008134226596312326,0 .008679670362245805,0.009343688859903955,0.010126282089286773,0.0103160016600462 43,0.010493863757633249,0.01196419043101915,0.014750696626548883,0.0169324716902 828,0.01600758878283038,0.013908816031303728,0.008181656489002194,0,0],"thursday":[0,0,0,0,0,0,0,0,0.004446552439675105,0.006533467718029288,0.007565067884033913,0 .008786387620798008,0.008786387620798008,0.008798245093970475,0.0091539692891444 84,0.009391118752593823,0.009841702733147568,0.01331594237268038,0.0156992944803 46238,0.01518942313393016,0.013458232050749985,0.007920792079207921,0,0],"saturday":[0,0,0,0,0,0,0,0,0.0033082350151182782,0.005703444595956602,0.007742929981620916, 0.009379261279421356,0.010197426928321575,0.010126282089286773,0.009817987786802 632,0.009568980850180826,0.009651983162388095,0.011039307523566726,0.01229619967 9848224,0.011501748977292938,0.010873302899152192,0.007576925357206379,0,0]},"relatedAdverts":[{"type":"similar","id":"31318556219","uri":"ymapsbm1://org?oid=31318556219","title":"Севорехи","rating":4.3,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/2022045/2a0000016d0599ca236c2e90a07b5d939d62/%s","category":"Орехи, снеки, сухофрукты","categories":[],"seoname":"sevorekhi","coordinates":[33.516466,44.602892],"icon":"supermarket","poiColor":"#FFA15E","isAdvert":true}],"logId":"dHlwZT1iaXpmaW5kZXI7aWQ9MjE3NDQ0OTE3MzE4","type":"business","id":"2174 44917318","shortTitle":"Лидер","additionalAddress":"","fullAddress":"Россия, Севастополь, проспект Генерала Острякова, 65А","postalCode":"299029","chain":{"id":"209403195662","name":"ЛИDЕР","seoname" :"lider"},"addressDetails":{"locality":"Севастополь","street":"проспект Генерала Острякова","house":"65А"},"phones":[{"number":"+7 (8692) 45-75-94","type":"phone","extraNumber":"","info":"Офис"},{"number":"+7 (978) 991-38-48","type":"phone","extraNumber":"","info":"Горячая линия для покупателей"},{"number":"+7 (978) 903-91-53","type":"phone","extraNumber":"","info":"Коммерческий отдел"}],"categories":[{"name":"Супермаркет","class":"supermarket","seoname":"supermarket","pluralName" :"Супермаркеты","id":"184108079"},{"name":"магазин продуктов","class":"supermarket","seoname":"grocery_store","pluralName":"Магазин ы продуктов","id":"184108031"}],"status":"open","workingTimeText":"ежедневно, 8:00–22:00","workingTime":[[{"from":{"hours":8,"minutes":0},"to":{"hours":22,"minutes":0}}],[{"from":{"hours":8,"minutes":0},"to":{"hours":22,"minutes":0}}],[{"from":{"hours":8,"minutes":0},"to":{"hours":22,"minutes":0}}],[{"from":{"hours":8,"minutes":0},"to":{"hours":22,"minutes":0}}],[{"from":{"hours":8,"minutes":0},"to":{"hours":22,"minutes":0}}],[{"from":{"hours":8,"minutes":0},"to":{"hours":22,"minutes":0}}],[{"from":{"hours":8,"minutes":0},"to":{"hours":22,"minutes":0}}]],"currentWorkingStatus":{"isOpenNow":true,"text":"Открыто до 22:00","shortText":"До 22:00"},"tzOffset":10800,"businessLinks":[],"socialLinks":[{"href":"https://vk.com/m_lider","name":"ВКонтакте","type":"vkontakte"},{"href":"https://www.instagram.com/market_lider_crimea/","name":"Instagram","type":"instagram"}],"urls":["http://млидер.com/"],"features":[{"id":"wheelchair_access","value":["частично доступно"],"name":"доступность на кресле-коляске","type":"enum"},{"id":"payment_by_credit_card","value":true,"name":"опла та картой","type":"bool"},{"id":"car_park","value":true,"name":"парковка","type":"b ool"}],"businessProperties":{"snippet_show_title":"short_title","snippet_show_category ":"no_category","snippet_show_address":"short_address","snippet_show_photo":"log o","snippet_show_work_hours":"today_work_hours","snippet_show_bookmark":"show_bo okmark","snippet_show_verified":"show_verified","snippet_show_rating":"five_star _rating","snippet_show_eta":"show_eta","snippet_show_geoproduct_offer":"show_geo product_offer","detailview_show_claim_organization":"show_claim_organization","d etailview_show_taxi_button":"show_taxi_button","deatailview_show_feedback_button ":"show_feedback_button","detailview_show_reviews":"show_reviews","detailview_sh ow_add_photo_button":"show_add_photo_button","snippet_show_subline":["no_subline"],"geoproduct_poi_color":"#FFA15E","has_verified_owner":"1"},"seoname":"lider","g eoId":959,"uri":"ymapsbm1://org?oid=217444917318","uriList":["ymapsbm1://org?oid=217444917318"],"references":[{"id":"1625657849","scope":"nyak"}],"routePoint":{"context":"djF8MzMuNTIwNzExLDQ0LjU3NTM5OXwzMy41MjA1NjIsNDQuNTc1NT g4LDIxNzQ0NDkxNzMxOF8wXywx"},"entrances":[{"name":"","coordinates":[33.520711109,44.575399019],"azimuth":256.293108169349,"tilt":0}],"sources":[{"id":"foursquare","name":"Foursquare","href":"http://foursquare.com"},{"id":"yandex","name":"Яндекс","href":"https://www.yandex.ru"}],"analyticsId":"1","region":{"id":959,"name":"sevastopol","names":{"ablative":"" ,"accusative":"Севастополь","dative":"Севастополю","directional":"","genitive":" Севастополя","instrumental":"Севастополем","locative":"","nominative":"Севастопо ль","preposition":"в","prepositional":"Севастополе"},"longitude":33.526402,"lati tude":44.556972,"zoom":12},"breadcrumbs":[{"name":"Карты","type":"root","url":"https://yandex.ru/maps/"},{"name":"Севастополь","type":"region","url":"https://yandex.ru/maps/959/sevastopol/","region":{"center":[33.526402,44.556972],"zoom":12}},{"name":"Супермаркеты","type":"search","url":"https://yandex.ru/maps/959/sevastopol/category/supermarket/"},{"chain":{"id":"209403195662","name":"ЛИDЕР","seoname":"lider","center":[33.520742,44.575408]},"name":"ЛИDЕР","type":"chain","url":"https://yandex.ru/maps/959/sevastopol/chain/lider/209403195662/"}],"relatedPlaces":[{"type":"similar","id":"31318556219","uri":"ymapsbm1://org?oid=31318556219","title":"Севорехи","rating":4.3,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/2022045/2a0000016d0599ca236c2e90a07b5d939d62/%s","category":"Орехи, снеки, сухофрукты","categories":[],"seoname":"sevorekhi","coordinates":[33.516466,44.602892],"icon":"supermarket","poiColor":"#FFA15E","isAdvert":true},{"type":"similar","i d":"72809035721","uri":"ymapsbm1://org?oid=72809035721","title":"Лидер","rating":3.6,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/1778671/2a0000016a2fb191ad832f45cca2bb774aa8/%s","category":"Супермаркет","categories":[],"seoname":"lider","coordinates":[33.518592,44.587062],"isAdvert":false},{"type":"similar","id":"82260250960","uri":"ymapsbm1://org?oid=82260250960","title":"Лидер","rating":3.3,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/2029876/2a0000016d10fb4c6b0227d65b5ab710af5b/%s","category":"Супермаркет","categories":[],"seoname":"lider","coordinates":[33.513308,44.579893],"isAdvert":false},{"type":"similar","id":"67265411069","uri":"ymapsbm1://org?oid=67265411069","title":"Лидер","rating":3.2,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/1637232/2a00000169d90663d788c0c626d2e1f8f1d2/%s","category":"Магазин продуктов","categories":[],"seoname":"lider","coordinates":[33.522618,44.571577],"isAdvert":false},{"type":"similar","id":"35993722106","uri":"ymapsbm1://org?oid=35993722106","title":"Лидер","rating":4.1,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/223006/2a0000015b39a16b510ddf20a3bbe16a5ffd/%s","category":"Магазин продуктов","categories":[],"seoname":"lider","coordinates":[33.55182,44.608915],"isAdvert":false},{"type":"similar","id":"117558087225","uri":"ymapsbm1://org?oid=117558087225","title":"Лидер","rating":3.7,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/1903890/2a00000169c39d46a916b648a6dcad6809a3/%s","category":"Магазин продуктов","categories":[],"seoname":"lider","coordinates":[33.553576,44.599925],"isAdvert":false},{"type":"similar","id":"93282349721","uri":"ymapsbm1://org?oid=93282349721","title":"Лидер","rating":4.2,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/1908863/2a0000016a1ff4908b2e17cc20d222d571f5/%s","category":"Магазин продуктов","categories":[],"seoname":"lider","coordinates":[33.484075,44.600237],"isAdvert":false},{"type":"similar","id":"236168986259","uri":"ymapsbm1://org?oid=236168986259","title":"Лидер","rating":3.5,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/1879888/2a0000016bbc2197cb8c829abf82dfcbb772/%s","category":"Супермаркет","categories":[],"seoname":"lider","coordinates":[33.459372,44.596878],"isAdvert":false},{"type":"similar","id":"132866345347","uri":"ymapsbm1://org?oid=132866345347","title":"Лидер","rating":4,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/1680678/2a0000016ce7712756b528ab06a1cddc68a6/%s","category":"Магазин продуктов","categories":[],"seoname":"lider","coordinates":[33.44222,44.581022],"isAdvert":false},{"type":"similar","id":"36048330568","uri":"ymapsbm1://org?oid=36048330568","title":"Лидер","rating":4.1,"photoUrlTemplate":"https://avatars.mds.yandex.net/get-altay/1868686/2a0000016a2f71b3ec538021c4c1c4ea5c80/%s","category":"Супермаркет","categories":[],"seoname":"lider","coordinates":[33.549982,44.636142],"isAdvert":false}],"toponyms":{"requestId":"1571480875551062-2880644397-vla1-1507","requestSerpId":"1571480875551062-2880644397-vla1-1507","requestContext":"ZAAAAAgAEAAaKAoSCarTgaynwkBAEavtJvimSUZAEhIJYMm5e14ksD8R Iq629DL/pj8iAQAoCjAAONfPz63p1M67zAFAsKYNSAFVAACAv1j///////////8BagJydXAAnQHNzEw9oAEAqAEA","requestQuery":"просп. Генерала Острякова, 65А, Севастополь","requestCorrectedQuery":"просп. Генерала Острякова, 65А, Севастополь","requestBounds":[[37.048427,55.43644866],[38.175903,56.04690174]],"requestName":"","displayType":"single","totalResultCount":1,"items":[{"requestId":"1571480875551062-2880644397-vla1-1507","title":"проспект Генерала Острякова, 65А","description":"Севастополь, Россия","address":"Россия, Севастополь, проспект Генерала Острякова, 65А","coordinates":[33.52094,44.575345],"bounds":[[33.516835,44.572411],[33.525046,44.57828]],"displayCoordinates":[33.52094,44.575345],"type":"toponym","id":"1444292449","kind":"house","formerName":"","postalCode": "299029","seoname":"prospekt_generala_ostryakova_65a","geoId":959,"uri":"ymapsbm 1://geo?ll=33.521%2C44.575\u0026spn=0.001%2C0.001\u0026text=%D0%A0%D0%BE%D1%81%D1%81 %D0%B8%D1%8F%2C%20%D0%A1%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D 1%8C%2C%20%D0%BF%D1%80%D0%BE%D1%81%D0%BF%D0%B5%D0%BA%D1%82%20%D0%93%D0%B5%D0%BD% D0%B5%D1%80%D0%B0%D0%BB%D0%B0%20%D0%9E%D1%81%D1%82%D1%80%D1%8F%D0%BA%D0%BE%D0%B2 %D0%B0%2C%2065%D0%90","uriList":["ymapsbm1://geo?ll=33.521%2C44.575\u0026spn=0.001%2C0.001\u0026text=%D0%A0%D0%BE%D1%81%D1%81 %D0%B8%D1%8F%2C%20%D0%A1%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D 1%8C%2C%20%D0%BF%D1%80%D0%BE%D1%81%D0%BF%D0%B5%D0%BA%D1%82%20%D0%93%D0%B5%D0%BD% D0%B5%D1%80%D0%B0%D0%BB%D0%B0%20%D0%9E%D1%81%D1%82%D1%80%D1%8F%D0%BA%D0%BE%D0%B2 %D0%B0%2C%2065%D0%90"],"entrances":[{"name":"","coordinates":[33.520698,44.575429],"azimuth":256,"tilt":0}],"logId":"dHlwZT1nZW9jb2RlcjthZGRyZXNzPdCg0L7RgdGB0LjRjywg0KHQtdCy0LDRgdGC0L7Qv9 C+0LvRjCwg0L/RgNC+0YHQv9C10LrRgiDQk9C10L3QtdGA0LDQu9CwINCe0YHRgtGA0Y/QutC+0LLQsCwgNjXQkC8zMy41MjA5NDAsNDQuNTc1MzQ1LzE=","sources":[],"analyticsId":"1"}],"exactResult":{"requestId":"1571480875551062-2880644397-vla1-1507","title":"проспект Генерала Острякова, 65А","description":"Севастополь, Россия","address":"Россия, Севастополь, проспект Генерала Острякова, 65А","coordinates":[33.52094,44.575345],"bounds":[[33.516835,44.572411],[33.525046,44.57828]],"displayCoordinates":[33.52094,44.575345],"type":"toponym","id":"1444292449","kind":"house","formerName":"","postalCode": "299029","seoname":"prospekt_generala_ostryakova_65a","geoId":959,"uri":"ymapsbm 1://geo?ll=33.521%2C44.575\u0026spn=0.001%2C0.001\u0026text=%D0%A0%D0%BE%D1%81%D1%81 %D0%B8%D1%8F%2C%20%D0%A1%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D 1%8C%2C%20%D0%BF%D1%80%D0%BE%D1%81%D0%BF%D0%B5%D0%BA%D1%82%20%D0%93%D0%B5%D0%BD% D0%B5%D1%80%D0%B0%D0%BB%D0%B0%20%D0%9E%D1%81%D1%82%D1%80%D1%8F%D0%BA%D0%BE%D0%B2 %D0%B0%2C%2065%D0%90","uriList":["ymapsbm1://geo?ll=33.521%2C44.575\u0026spn=0.001%2C0.001\u0026text=%D0%A0%D0%BE%D1%81%D1%81 %D0%B8%D1%8F%2C%20%D0%A1%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D 1%8C%2C%20%D0%BF%D1%80%D0%BE%D1%81%D0%BF%D0%B5%D0%BA%D1%82%20%D0%93%D0%B5%D0%BD% D0%B5%D1%80%D0%B0%D0%BB%D0%B0%20%D0%9E%D1%81%D1%82%D1%80%D1%8F%D0%BA%D0%BE%D0%B2 %D0%B0%2C%2065%D0%90"],"entrances":[{"name":"","coordinates":[33.520698,44.575429],"azimuth":256,"tilt":0}],"logId":"dHlwZT1nZW9jb2RlcjthZGRyZXNzPdCg0L7RgdGB0LjRjywg0KHQtdCy0LDRgdGC0L7Qv9 C+0LvRjCwg0L/RgNC+0YHQv9C10LrRgiDQk9C10L3QtdGA0LDQu9CwINCe0YHRgtGA0Y/QutC+0LLQsCwgNjXQkC8zMy41MjA5NDAsNDQuNTc1MzQ1LzE=","sources":[],"analyticsId":"1"},"bounds":[[33.516835,44.572411],[33.525046,44.57828]]},"reviewResults":{"reviews":[{"reviewId":"ud0sqHoDrV9oqAfh9PoRSaG6AdMHbFA","author":{"name":"Виталий А","profileUrl":"https://yandex.ru/user/Abgyj5pC3bxI","avatarUrl":"https://avatars.mds.yandex.net/get-yapic/23186/enc-8fdc5aae95fd740d4017eadd00298382122f92bd801f726a03a02f775fec12c9/{size}","professionLevel":"Знаток города 15 уровня"},"text":"Постоянно не приятный запах в магазине (тухлятиной какой то несет). Перестал ходить","rating":3,"updatedTime":"2019-08-23T16:52:12.255Z","reactions":{"likes":2,"dislikes":1,"userReaction":"NONE"},"ph otos":[]},{"reviewId":"XuViDVFfCBMcs7CdHvRimlklKt-cVIHkB","author":{"name":"Miguel","profileUrl":"https://yandex.ru/user/AQXubKV6O0qk","avatarUrl":"https://avatars.mds.yandex.net/get-yapic/21493/enc-3758e998271042f0b0f13e2baf69fa61/{size}","professionLevel":"Знаток города 8 уровня"},"text":"Цены взвинчены и акционных товаров очень мало, ассортимент слабый, ряды узкие, скорее всего с нарушениями СанПина.\nВ молочных рядах постоянно трутся супервайзеры, расставляя продукцию и мешая покупателям.\nПлюсы - почти нет очередей на кассах (только в час-пик) и порядок со сроками годности.","rating":3,"updatedTime":"2019-10-04T21:15:48.621Z","businessComment":{"text":"Благодарим за информацию о качестве работы нашего магазина. Будем стараться!","updatedTime":"2019-10-09T12:36:04.875Z"},"reactions":{"likes":0,"dislikes":0,"userReaction":"NONE"},"p hotos":[]},{"reviewId":"pNAvQfojtMO78UYxRn0oDhZ-g0DKP42","author":{"name":"Антон S.","profileUrl":"https://yandex.ru/user/AcFndvU_miBZ","avatarUrl":"https://avatars.mds.yandex.net/get-yapic/35885/enc-e98b99c57477ce52ecc56e30dafd543fe580997cd50451710dc331fa778406c2/{size}","professionLevel":"Знаток города 6 уровня"},"text":"Магазин как магазин, продукты как везде пустые и вредные для здоровья. Кассы все работают, потому что их штуки 3-4.\nОхрана сонная - я откусил булку, прихватил несколько шоколадных конфет и дирол прямо на кассе. Деды и ухом не повели, хотя пялиться пялились (наверное это военные пенсионеры владеющие техникой сна с открытыми глазами). \nА может и видели, но не стали меня беспокоить т.к. я гуляя по торговому залу праздно трещал электрошокером.","rating":3,"updatedTime":"2019-06-07T16:06:01.290Z","reactions":{"likes":3,"dislikes":2,"userReaction":"NONE"},"ph otos":[]},{"reviewId":"7sbQ9ebL8WbTWgsB83-zZs0WyT3RNz42","author":{"name":"Андрей Р","profileUrl":"https://yandex.ru/user/AQgGficgjCbn","avatarUrl":"https://avatars.mds.yandex.net/get-yapic/51169/yvq6ul7bM4GFLnsG19maBGvDaIs-1/{size}","professionLevel":"Знаток города 12 уровня"},"text":"Цены берут "с потолка"! Овощи и нектары по ценам от 50 до 100% выше чем в других магазинах Севастополя","rating":2,"updatedTime":"2019-07-05T11:20:06.085Z","reactions":{"likes":1,"dislikes":0,"userReaction":"NONE"},"ph otos":[]},{"reviewId":"9aP9JwTiXcBxTNdCB-UzGfuPTvI46CC1G","author":{"name":"Наталья Морген","profileUrl":"https://yandex.ru/user/Ad6wMPiCjErV","avatarUrl":"https://avatars.mds.yandex.net/get-yapic/20749/enc-76b39b0e51ed59c29a35d1c5b4622a8ef78d1552e7dc315fe98cf299642d4227/{size}","professionLevel":"Знаток города 8 уровня"},"text":"Один продавец на три отдела: рыбный, колбасный и охлаждённая куриная продукция. Приходится ждать долго. Очень назойливая охрана, чувствуешь себя как зэк на выгуле. Не очень приятно.","rating":3,"updatedTime":"2019-09-17T08:14:54.042Z","businessComment":{"text":"Спасибо, исправим","updatedTime":"2019-09-24T07:01:39.571Z"},"reactions":{"likes":3,"dislikes":1,"userReaction":"NONE"},"p hotos":[]},{"reviewId":"eE6dVgzz1beSfikqhtxjrYHOlXHQY4uH","author":{"name":"sergei k.","profileUrl":"https://yandex.ru/user/AcUvQaCsrSFQ","avatarUrl":"https://avatars.mds.yandex.net/get-yapic/43978/0iEFWSD3ABnHdX3v8nPTctRhZlU-1572818721/{size}","professionLevel":"Знаток города 12 уровня"},"text":"Дорогой магазин. Не заезжаю. Иногда бывают скидки.","rating":3,"updatedTime":"2019-07-05T13:50:14.932Z","reactions":{"likes":1,"dislikes":1,"userReaction":"NONE"},"ph otos":[]},{"reviewId":"euRhrGDX956r93lGcEapaXktilF8H5","author":{"name":"Андрей К.","profileUrl":"https://yandex.ru/user/AcbmezJ5odyo","avatarUrl":"https://avatars.mds.yandex.net/get-yapic/41409/enc-6fd81470be03d14a884cdbd15f1dd1d92c184c09742dc39f8b7e34a40659312d/{size}","professionLevel":"Знаток города 12 уровня"},"text":"Большой выбор. Средние цены. Удобное расположение.","rating":5,"updatedTime":"2019-06-26T08:29:46.403Z","reactions":{"likes":2,"dislikes":1,"userReaction":"NONE"},"ph otos":[]},{"reviewId":"7a-7wS9F9RP5RNxjOWmbKpL2Fey6rcfG","author":{"name":"Сергей З.","profileUrl":"https://yandex.ru/user/AblU-0segq9f","avatarUrl":"","professionLevel":"Знаток города 7 уровня"},"text":"Среди лидеров в нашем городе наибольший выбор товаров, всегда свежие продукты а по бытовой химии, спиртному и овощам самый минимальные цены.","rating":5,"updatedTime":"2019-09-21T16:53:47.212Z","businessComment":{"text":"Спасибо за приятный отклик","updatedTime":"2019-09-24T07:01:01.060Z"},"reactions":{"likes":4,"dislikes":0,"userReaction":"NONE"},"p hotos":[]},{"reviewId":"yfO3URWuWZuRi7YTK7__IX2ELh1lq1","author":{"name":"Игорь Ж.","profileUrl":"https://yandex.ru/user/AemnuXLapqME","avatarUrl":"","professionLevel":"Знаток города 6 уровня"},"text":"С парковкой проблем нет, цены приемлемые, широкий ассортимент хозяйственных товаров и продуктов питания, нужно следить за сроками годности на молочную продукцию","rating":4,"updatedTime":"2019-06-19T10:50:29.259Z","reactions":{"likes":4,"dislikes":0,"userReaction":"NONE"},"ph otos":[]},{"reviewId":"U_JXN7ndeZ0xPoL8pt-Yn0w4_dMMDzs","author":{"name":"Виктория


из этого всего нужно выбрать нужные данные

"title":"Лидер"

"category":"Орехи, снеки, сухофрукты"

"fullAddress":"Россия, Севастополь, проспект Генерала Острякова, 65А",

"phones":[{"number":"+7 (8692) 45-75-94","type":"phone","extraNumber":"","info":"Офис"},{"number":"+7 (978) 991-38-48","type":"phone","extraNumber":"","info":"Горячая линия для покупателей"},{"number":"+7 (978) 903-91-53","type":"phone","extraNumber":"","info":"Коммерческий отдел"}]

Добавлено через 2 минуты
* * *
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
19.10.2019, 23:48  [ТС] 49
hf,jnftv

Добавлено через 5 часов 31 минуту
vic5710, как быть, если нужно открыть не файл, а url?
0
931 / 692 / 270
Регистрация: 10.12.2016
Сообщений: 1,701
20.10.2019, 09:52 50
IRIP, requests
Python
1
2
3
4
5
6
7
8
9
10
11
12
from lxml import html, etree
import requests
 
path = '//div[@class="h4"]/a | //div[@class="col-md-12"]//p'
for i in range(1,11):
    req = 'https://bigspr.ru/sevastopol/magaziny-produktov/page-' + str(i)
    res = requests.get(req)
    if res.status_code == 200:
        print('page:',i)
        data = html.fromstring(res.text)
        for i in data.xpath(path):
            print (i.tag,i.text_content())
1
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
20.10.2019, 13:36  [ТС] 51
это похоже тот случай, когда BeautifulSoup совершенно бесполезен =(
потому что на странице смешаны html и json
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
20.10.2019, 23:48  [ТС] 52
vic5710, спасибо

Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from lxml import html, etree
import requests
import json
import time
 
path = '//script'
 
def flatten_json(obj):
    out = []
    def flatten(obj,keys='[',delim='][',):
        if obj and type(obj) is dict:
            for key in obj:
                flatten(obj[key], keys + repr(key) + delim)
        elif obj and (type(obj) is list or type(obj) is tuple):
            for  i,item in enumerate(obj):
                flatten(item, keys + repr(i) + delim)
        else:
            out.append([keys[:-1],obj])
    flatten(obj)
    return out
 
req = 'https://yandex.ru/maps/org/sevorekhi/31318556219/'
res = requests.get(req)
if res.status_code == 200:
    data = html.fromstring(res.text)
    print(data)
    for node in data.xpath(path):
        if 'application/json' in node.attrib['type']:
                d = json.loads(node.text)
                for k, v in flatten_json(d):
                    if 'name' in k or 'address' in k or 'center' in k or 'number' in k:
                        print(k, v)
                        time.sleep(5)


вот так получилось

* кто еще будет делать, вдруг
важно заметить, что обязательно использование time.sleep()
c значением минимум 2
0
931 / 692 / 270
Регистрация: 10.12.2016
Сообщений: 1,701
21.10.2019, 09:29 53
ну для вашего случая можно примерно так(код запроса скопирован из браузера)
Python
1
2
3
4
5
6
7
8
9
req = 'https://yandex.ru/maps/959/sevastopol/?clid=1955454&ll=33.494004%2C44.593741&mode=search&sll=33.494975%2C44.605669&sspn=0.435333%2C0.307073&text=%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B%20%D1%81%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D1%8C&z=12'
r = requests.get(req)
print(r.status_code)
data = html.fromstring(r.text)
for i in data.xpath('//script[@type="application/json"]'):
    d = json.loads(i.text_content())
    out = flatten2(d['searchPreloadedResults']['items'])
    for item in out:
        print(item)
но ИМХО вы не тем путем идете, якарты заточены на интерактив с юзером, для получения данных апи есть.
что касается достоверности - недавно в другом городе надо мне было салон мегафона посетить. нашел по якарте, пришел - салона нет
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
21.10.2019, 14:41  [ТС] 54
vic5710, спасибо, все, что мне нужно было - я получил -
решение отличное!

Добавлено через 1 минуту
с учетом 2 секундной паузы между запросами
я взял для анализа 2000 объектов
проверил их уникальность (каждый уникален)
и составил карты маршрутов следования

и все это (с учотом сложности написания кода) заняло одни сутки
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
21.10.2019, 14:45  [ТС] 55
Цитата Сообщение от vic5710 Посмотреть сообщение
ну для вашего случая можно примерно так(код запроса скопирован из браузера)
req = 'https://yandex.ru/maps/959/sevastopol/?clid=1955454&ll=33.494004%2C44.593741&mode=search&sll=33.494975%2C44.605669&ssp n=0.435333%2C0.307073&text=%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B%20%D 1%81%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D1%8C&z=12'
r = requests.get(req)
print(r.status_code)
data = html.fromstring(r.text)
for i in data.xpath('//script[@type="application/json"]'):
* * d = json.loads(i.text_content())
* * out = flatten2(d['searchPreloadedResults']['items'])
* * for item in out:
* * * * print(item)
для меня еще, эти коды до сих пор выглядят примерно так:

но с каждым разом, я все чаще узнаю циклы, и прочие наворотики =)
Миниатюры
Как написать парсер Яндекс-карт?  
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
21.10.2019, 14:49 56
Цитата Сообщение от IRIP Посмотреть сообщение
важно заметить, что обязательно использование time.sleep()
c значением минимум 2
А зачем?
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
21.10.2019, 15:27  [ТС] 57
Цитата Сообщение от 0x10 Посмотреть сообщение
А зачем?
а зачем делать бяку яндексу и себе?
2к запросов пульнуть может ооочень быстро

по-этому, пауза - это щадящий режим для всех
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
21.10.2019, 16:21 58
IRIP, вопрос возник потому, что в приведенном в том посте коде всего один запрос, а задержка выполняется между итерациями по json.
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
22.10.2019, 12:17  [ТС] 59
Цитата Сообщение от 0x10 Посмотреть сообщение
всего один запрос
правильно, это лишь кусочек программы

один запрос на один урл
а урлов, много
в моем случае, более 2000

по-этому решил сделать паузу именно в выполнении json
0
0 / 0 / 0
Регистрация: 29.10.2019
Сообщений: 1
29.10.2019, 12:25 60
IRIP, подскажи, please. Как ты получил 2000 ссылок?
В браузере можно "прокрутить" и подгрузить дополнительные результаты поиска объектов. Но get-запрос отдает только максимум 25 результатов.
Резать карту на мелкие квадраты или есть способ получить 2-ю и последующие страницы поиска?
0
29.10.2019, 12:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2019, 12:25
Помогаю со студенческими работами здесь

Настройка Яндекс карт
Здравствуйте, я провожу настройку ЧПУ URL коммерческого сайта http://www.diesel-serv.ru/, я уже...

API Яндекс.Карт
Занимаюсь следующей страничкой: avangardtaxi.ru/test.php, Яндекс API 2.0 Есть четыре инпута для...

Координаты яндекс карт
Вопрос по координатам яндекс карт В файле header.php задал исходные координаты карты &lt;script...

Использование яндекс карт
Добрый день всем. Подскажите где можно почитать как использовать яндекс карты или google maps в...

Api яндекс карт
проще говоря у меня есть карта с меткой, мне надо её удалить и поставить новую(напишите пожалуйста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru