@codeenjoyer

Как получить данные с сайта росреестра?

Хочу получить данные с сайта росреестра и внести их в таблицу
Нужный мне текст, а именно адрес,
Саратовская обл, р-н Перелюбский в 0.5 км юго-западнее с.Перелюб и в 1 км юго-западнее х.Бригадировка
хранится в
<div class="expanding-box_content" style="transition: max-height 0ms ease-in 0s; max-height: none;">


import requests
from bs4 import BeautifulSoup

url = 'https://pkk.rosreestr.ru/#/search/51.82264762327133,50.346799393644446/15/@5w3tqw5ca?text=64%3A24%3A180104%3A233&type=1&opened=64%3A24%3A180104%3A233'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
adres = soup.find_all('div', class_='expanding-box_content')

for result in adres:
    print(result.text)
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Правило номер ноль при парсинге: при любых проблемах сохраняй на диск то, что тебе пришло в ответе от сервера.
То, что ты видишь в браузере - это не обязательно то же самое, что браузер получил от сайта.
То, что браузер получил от сайта - это не обязательно то же самое, что requests получит от сайта.

В данном случае, и requests и браузер получают в ответе вот это:
<body style="height: 100%; width:100%;">
<div id=app style="height: 100%; width:100%;"></div>
<script src=js/chunk-vendors.c1d200da.js></script>
<script src=js/chunk-common.adcda62e.js></script>
<script src=js/chunk-esri.caf28189.js></script>
<script src=js/index.ca134891.js></script>
</body>

Как видишь, нужного элемента тут просто нет, потому что он создаётся динамически, через JavaScript. А BS не выполняет скрипты.

Варианта только два:
1. Выяснять, каким запросом сайт подтягивает данные для этого, научиться этот запрос делать самостоятельно и вытаскивать искомые данные из полученного. Медленно и трудно на подготовительном этапе, зато потом работает сравнительно быстро... если, конечно, сайт защиту от парсинга не поставит.
2. Запускать управляемый браузер, дать ему загрузить страницу и выполнить скрипты, а потом уже искать нужные данные. Быстрое решение в плане разработки, но более медленное и ресурсоёмкое в дальнейшем использовании.
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
для безграмотных парсеров поиск росреестра:

https://pkk.rosreestr.ru/api/features/?text=52.929979122449325+87.97534995053527&tolerance=2&types=[2,3,4,1,21,5,10]


вернет он:
{
  "total": 5,
  "results": [
    {
      "sort": 42120102004,
      "type": 2,
      "center": {
        "y": 6970386.423234693,
        "x": 9794346.776440643
      },
      "attrs": {
        "cn": "42:12:0102004",
        "id": "42:12:102004"
      },
      "extent": {
        "xmax": 9795238.11208436,
        "ymin": 6969855.0191011,
        "ymax": 6971012.594670494,
        "xmin": 9793163.65570717
      }
    },
    {
      "sort": 4212,
      "type": 3,
      "center": {
        "y": 6950818.390114815,
        "x": 9810172.497224698
      },
      "attrs": {
        "cn": "42:12",
        "id": "42:12",
        "name": "Таштагольский"
      },
      "extent": {
        "xmax": 9934125.20280487,
        "ymin": 6829546.777098134,
        "ymax": 7049761.803853536,
        "xmin": 9674999.04333556
      }
    },
    {
      "sort": 42,
      "type": 4,
      "center": {
        "y": 7328079.667631133,
        "x": 9706880.109152177
      },
      "attrs": {
        "cn": "42",
        "id": "42",
        "name": "Кемеровский"
      },
      "extent": {
        "xmax": 9952694.29980072,
        "ymin": 6829546.774971992,
        "ymax": 7726492.011682568,
        "xmin": 9401209.32240626
      }
    },
    {
      "sort": 4212010200400025,
      "type": 1,
      "center": {
        "y": 6970070.760976506,
        "x": 9793366.321078256
      },
      "attrs": {
        "address": "Кемеровская область, р-н. Таштагольский, пгт. Шерегеш, ул. Лесная, д. 3",
        "cn": "42:12:0102004:25",
        "id": "42:12:102004:25"
      },
      "extent": {
        "xmax": 9793403.39482761,
        "ymin": 6970010.120180669,
        "ymax": 6970129.685452594,
        "xmin": 9793328.57189643
      }
    },
    {
      "sort": 4212010200401338,
      "type": 5,
      "center": {
        "y": 6970067.466684912,
        "x": 9793370.470713653
      },
      "attrs": {
        "address": "Российская Федерация, Кемеровская область-Кузбасс, Таштагольский муниципальный район, Шерегешское городское поселение, пгт. Шерегеш, ул. Лесная, дом 3",
        "cn": "42:12:0102004:1338",
        "id": "42:12:102004:1338"
      },
      "extent": {
        "xmax": 9793387.58929377,
        "ymin": 6970050.160377153,
        "ymax": 6970087.472030083,
        "xmin": 9793353.0083641
      }
    }
  ]
}

парсится такое на раз-два.

надеюсь пояснять про то какое поле что значит не надо?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы