GithubHelp home page GithubHelp logo

interlark / parser-2gis Goto Github PK

View Code? Open in Web Editor NEW
169.0 4.0 30.0 982 KB

Парсер сайта 2GIS для сбора адресов и контактов предприятий России и стран СНГ

License: GNU Lesser General Public License v3.0

Python 100.00%
2gis addresses contacts parser python3 data-mining cdp chrome

parser-2gis's Introduction

Logo

Parser2GIS

Tests PyPi version Supported Python versions Downloads

Parser2GIS - парсер сайта 2GIS с помощью браузера Google Chrome.

Screenshot

ℹ️ Описание

Парсер для автоматического сбора базы адресов и контактов предприятий, которые работают на территории России , Казахстана , Беларуси , Азербайджана , Киргизии , Узбекистана , Чехии , Египта , Италии , Саудовской Аравии , Кипра , Объединенных Арабских Эмиратов , Чили , Катара , Омана , Бахрейна , Кувейта .

✨ Особенности

  • 💰 Абсолютно бесплатный
  • 🤖 Успешно обходит анти-бот блокировки на территории РФ
  • 🖥️ Работает под Windows, Linux и MacOS
  • 📄 Три выходных формата: CSV таблица, XLSX таблица и JSON список
  • 🔗 Наличие генератора ссылок по городам и рубрикам

🚀 Установка

Для работы парсера необходимо установить браузер Google Chrome.

Установка одним файлом

Скачать релиз.

Установка из PyPI

# CLI
pip install parser-2gis
# CLI + GUI
pip install parser-2gis[gui]

📖 Документация

Описание работы доступно на вики.

👍 Поддержать проект

Yoomoney Donate

parser-2gis's People

Contributors

interlark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

parser-2gis's Issues

Выбор данных

Добрый день, как я понимаю вопрос нехватки оперативка связан с тем что парсер забирает все данные каждой организации, а можно ли как то его ограничить по выкачиванию данных, например

  1. Выкачивать только компании у которых есть email или телефон
  2. Выкачивать все компании но только поля название, email, телефон, сайт без не нужных забивающих память ссылок

v. 1.1.2

Добрый!
Похоже версия нестабильна. Ограничение на объем памяти не работает.
Программа забирает всю свободную память и виснет.

Вопрос по Google Maps и Яндекс Картам

interlark, здравствуйте!

Очень благодарен за Ваш проект. Безумно крутую вещь Вы сделали.
Подскажите, пожалуйста, а не встречалось ли Вам что-то похожее по Google Maps или Яндекс Картам?
Или есть ли у Вас в планах разработка подобного для других сервисов?

С уважением,
negeloT

exception in decoder

Exception in thread Thread-10:
Traceback (most recent call last):
File "threading.py", line 932, in _bootstrap_inner
File "threading.py", line 870, in run
File "pychrome/tab.py", line 122, in _recv_loop
File "json/init.py", line 357, in loads
File "json/decoder.py", line 337, in decode
File "json/decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Перестаёт работать после 3 страниц

image
Проверял с двух компов, по рекомендациям из предыдущих issue включал ВПН (выбирал Россию), т.к. сам из Беларуси. Всё-равно после третьей страницы перестаёт подгружать данные.

города (населенные пункты) точечные выгрузки

А есть способ выгрузки всего не по области (которая к городу примыкает), а по населенному пункту который входит в эту область?
как пример: Шаховская городской округ

https://2gis.ru/search/%D0%A8%D0%B0%D1%85%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D1%81%D0%BA%D0%BE%D0%B9%20%D0%BE%D0%BA%D1%80%D1%83%D0%B3/geo/4504613239652544/35.450142%2C55.926513?m=35.336775%2C56.002334%2F9.84

Блокировка

При работе парсера примерно на 7ой ссылке начинают блокировать АПИ ключ.
Примерно на 100ой ссылке блокировка по IP.
Нужен механизм прокси . И обработка повтора запроса при ошибке блокировки ключа или таймауту .
Так же замечены ошибки парсера ответа json.
Так же имеет смысл помечать ссылки отработанные корректно в парсере . Чтобы можно продолжить далее .

Ошибка ERR_CONNECTION_CLOSED

Во время работы получена ошибка .
После нее парсер остановился.
Получена ошибка при попытке запустить парсер очередной ссылки.
Посути понятно откуда она растет . Это либо блокировка IP либо проблемы с инетом.
Но желательно обрабатывать ошибку и перезапускать парсер ссылки .

22:31:02.141 | Ошибка во время работы парсера.
Traceback (most recent call last):
File "parser_2gis\gui\app.py", line 83, in run
File "parser_2gis\parser\parser.py", line 138, in parse_url
File "parser_2gis\chrome\remote.py", line 233, in navigate
parser_2gis.chrome.exceptions.ChromeException: net::ERR_CONNECTION_CLOSED

Не работает

Здравствуйте, сегодня скачал версию для macos, выбрал рубрику, ввел название файла для записи данных. После нажатия на кнопку Запуск открывается Chrome с вкладкой 2ГИС, несколько секунд ничего не происходит, а потом браузер закрывается. В файле выбранном для записи данных кроме названия столбцов ничего нет.

Дополнителнить географическими объектами

Пожалуйста, дополните возможностью скачивать географические объекты?
Например Озера, Горы, Пляжи и т. д.
Достаточно одной точкой и со сбором статистики по аналогии с существующим вариантом парсинга организаций.
Буду признателен!!!

Ряд доработок

Предлагаю следующее.
1 сделать возможность работать в несколько потоков.
2 Загружать файлы с ссылками. Ранее подготовленными. К сожалению если требуется выбрать например 20/30 рубрик то клацать мышкой не удобно. Примерно там 1590 ссылок по итогу получается .
Файлы например можно поделить по городам и передавать парсеру. Далее он их обрабатывает и ложит в отдельные файлы результат .
3 При старте проверять есть ли файл куда будет производится сохранение . Просто по недогляду легко запустить парсер с сохранением в старый файл и он его тут же затирает .

Посути это все сделать уже можно используя интерфейс командной строки и немного скриптов . Но не все могут их писать .

Не загружает все найденные контакты

Добрый день! После прохождения капчи загружает еще не более 10 контактов и заканчивается, хотя в открывшемся окне chrome с 2GIS показывает 767 организаций. Предполагаю, что после капчи загружает ещё один лист контактов и всё.

При большой выгрузке свыше 1000 строк зависает

Парсер очень крутой. Мне очень понравился. Столкнулся с проблемой при выгрузке свыше 1000 строк. Зависает браузер. и перестает грузить новые строки. Пробывал на 2 машинах результат аналогичный. 1100-1300 строк выгружает а потом зависает если получиться поправить будет очень круто))). Спасибо за хороший и удобный софт

Удаление обработанных ссылок

Иногда парсер падает в ошибку .
И в принципе не понятно какие ссылки уже готовы какие нет .
Было бы круто если обработанные ссылки удалялись из списка.
И результат сохранялся .
Таким образом если даже парсер упал, то можно продолжить далее.

Что нужно установить, чтобы пользоваться программой?

Скачал версию для Windows: Parser2GIS.exe
У меня установлена ОС Windows 7 x64, и хром тоже установлен.
При запуске пишет системная ошибка, отсутствует файл api-ms-win-core-path-l1-1-0.dll,
затем сразу следующая ошибка: не найдет модуль python310.dll

Для работы написано, что требуется только: "Для работы парсера необходимо установить браузер Google Chrome."
Все таки, что еще нужно установить или обновите инструкцию к установке, пожалуйста.

Ошибка закрытия браузера

16:24:23.000 | Парсинг ссылки завершён.

16:24:23.000 | Вкладка браузера была закрыта.

16:24:23.022 | Парсинг завершён.
При работе парсера иногда возникает данная ошибка.
К сожалению не знаю как узнать о ней больше и приложить логи.

Ошибка при запуске parser-2gis через докер контейнер

В докер установил google chrome, и версия все корректно показывает. Но при запуске парсинга разные ошибки выходить:
1)
Ошибка во время работы парсера.
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/parser_2gis/runner/cli.py", line 29, in start
parser.parse(writer)
File "/usr/local/lib/python3.9/site-packages/parser_2gis/parser/parsers/main.py", line 196, in parse
self._wait_requests_finished()
File "/usr/local/lib/python3.9/site-packages/parser_2gis/common.py", line 64, in inner
raise TimeoutError(func)
TimeoutError: <function MainParser._wait_requests_finished at 0x7f13c20e2c10>

Настроечные параметры передаю вот такие:

listUrls=['https://2gis.kz/taraz/search/%D0%90%D0%BF%D1%82%D0%B5%D0%BA%D0%B8']
binary_path=PosixPath('/usr/bin/google-chrome-stable') start_maximized=False headless=False disable_images=True silent_browser=True memory_limit=1400

Можно ли узнать в чем именно проблема?

parser-2gis запускаю через cli в python скрипт.:

image

Парсинг организаций

Приветствую, столкнулся с проблемой, мне надо запарсить организации из определенного здания и у меня не получается это сделать. Есть ли решение этой проблемы?

максимальное количество записей

Скажите а можно обойти ограничение на максимальное количество записей в выгрузке?
"| Парсинг [2800] > Wildberries
| Спарсено максимально разрешенное количество записей с данного URL."

Масштаб карты для парсинг окрестностей и городов-сателлитов

Приложение - пушка! Правда не нашел возможности задать масштаб в настройках, насколько я понимаю, сейчас браузер открывает карту города с какими-то окрестностями по умолчанию. От чего зависит масштаб (или увеличение) карты не очень понятно, но по умолчанию на карту не всегда входят окрестные населенные пункты и города-сателлиты, которых нет в списке. Можно попробовать изменить масштаб карты при уже запущенном парсере, иногда это срабатывает: сначала мне показывало 186 мест, после уменьшения уменьшения масштаба 802, сейчас парсится 382 место. Но при таком подходе иногда вылетает:

12/03/2023 15:15:22.637 | ERROR    | Ошибка во время работы парсера.
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.10/site-packages/parser_2gis/runner/gui.py", line 69, in run
    self._parser.parse(writer)
  File "/home/user/.local/lib/python3.10/site-packages/parser_2gis/parser/parsers/main.py", line 208, in parse
    self._chrome_remote.perform_click(link)
  File "/home/user/.local/lib/python3.10/site-packages/parser_2gis/chrome/remote.py", line 356, in perform_click
    resolved_node = self._chrome_tab.DOM.resolveNode(backendNodeId=dom_node.backend_id)
  File "/home/user/.local/lib/python3.10/site-packages/pychrome/tab.py", line 177, in call_method
    raise CallMethodException("calling method: %s error: %s" % (_method, result['error']['message']))
pychrome.exceptions.CallMethodException: calling method: DOM.resolveNode error: Node with given id does not belong to the document
12/03/2023 15:15:22.643 | INFO     | Парсинг ссылки завершён.
12/03/2023 15:15:22.722 | INFO     | Удаление пустых колонок CSV.
12/03/2023 15:15:22.731 | INFO     | Удаление повторяющихся записей CSV.
12/03/2023 15:15:22.733 | INFO     | Парсинг завершён.

Можно ли как-то более контролируемо задать масштаб или увеличение в настройках? Насколько я понимаю, увеличение - это цифра после слэша в параметре m запроса, например, https://2gis.ru/novosibirsk/search/аптеки?m=82.942781,55.017395/9.

Данные парсинга

Добрый день,
крайне желательно вытягивать ещё и ID сети компаний там, где они есть. Наименование сети тоже, но это уже не так важно.
Видимо, нужно организовывать дополнительный поиск ссылки что-вроде "/branches/" по странице фирмы.
Заранее благодарю за ответ.

не возможно пройти капчу

После загрузки 10 страниц, вылезает капча, на которой не грузятся изображения
image
, ели эту капчу открыть в другой вкладке то все работает, но приложение заканчивает работу
image

Крашится парсинг

При парсинге с одной url более 2.5k точек появляется зависание и падает вкладка парсинга с сообщением "oops.." (иногда пишется out of memory). Тестировал на разных устройствах win/mac, но всегда отваливается на 2300 +-200 точек.
В параметрах указываю:
image

С чем это может быть связано?

Pydantic version

В зависимостях проекта лежит pydantic>=1.9.0
На версии pydantic > 2.0.0 вылетают разные ошибки.
Необходимо зафиксировать более четкую версию

Перестает парсить на 5 странице 2ГИС

Здравствуйте!

IP Российский
Пробовал 2 разных IP

Ссылка сгенерирована в программе
https://2gis.kz/nur_sultan/search/Продуктовые магазины/rubricId/373

В 2ГИС написано 1960 объектов.
Грузится только 37-40 организаций.

Если смотреть в 2ГИС, то парсится только 5 страниц с сайта. Дальше не идет.

Потом пишет «парсинг завершен» и все закрывается.

Иногда пишет вот такую ошибку:

10:24:35.826 | Ошибка во время работы парсера.
Traceback (most recent call last):
File "parser_2gis\writer\writers\csv_writer.py", line 172, in _extract_raw
File "pydantic\main.py", line 342, in pydantic.main.BaseModel.init
pydantic.error_wrappers.ValidationError: 3 validation errors for CatalogItem
name_ex
field required (type=value_error.missing)
org
field required (type=value_error.missing)
rubrics
field required (type=value_error.missing)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "parser_2gis\runner\gui.py", line 69, in run
File "parser_2gis\parser\parsers\main.py", line 222, in parse
File "parser_2gis\writer\writers\csv_writer.py", line 153, in write
File "parser_2gis\writer\writers\csv_writer.py", line 175, in _extract_raw
File "parser_2gis\common.py", line 115, in report_from_validation_error
KeyError: 'name_ex'


Вопрос: Что я делаю не так? Подскажите, как загрузить все 1690 объектов?

Вот такую ошибку выдает после 5 страницы

Можно ли запустить хром с расширениями?

На моем хроме есть расширение(Random User-Agent (Switcher)), и при запуске парсера, он запускает без расширении. Можно как то включить в настройках, чтобы можно было включить с расширениями?

как работать на macOS?

Failed to load GUI: dlopen(/var/folders/xj/4wzr41z108lcz9df2p0635_w0000gn/T/_MEIyGDaBb/lib-dynload/_tkinter.cpython-38-darwin.so, 2): Library not loaded: /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
Referenced from: /private/var/folders/xj/4wzr41z108lcz9df2p0635_w0000gn/T/_MEIyGDaBb/libtk8.6.dylib

такую ошибку выдает терминал
куда копать?

интеграция с БД

Выгрузка в CSV или JSON это очень хорошо.
А вот например выгрузка в sqlite или Postgresql ?

Загрузив в них единожды данные очень удобно далее делать выборки .

Пожелание

Добрый!
Спасибо Вам за такое нужное приложение!
И можно ли сделать множественный выбор рубрик при генерации ссылок?
Просто каждый раз выбирать по одной рубрике не очень удобно.
Заранее спасибо!

TypeError: the JSON object must be str, bytes or bytearray, not dict

10:50:06.731 | Ошибка во время работы парсера.
Traceback (most recent call last):
File "parser_2gis\gui\app.py", line 83, in run
File "parser_2gis\parser\parser.py", line 204, in parse_url
File "json_init_.py", line 339, in loads
TypeError: the JSON object must be str, bytes or bytearray, not dict

при попытке спарсить
10:49:37.274 | Парсинг ссылки https://2gis.ru/dubai/search/Обои/rubricId/556

Парсинг автобусных остановок из 2ГИС

Здравствуйте!
Подскажите, пожалуйста, а как можно парсить автобусные остановки?
Я в поисковике Вашего приложения вбиваю "остановка" без рубрики, он находит 1000+ остановок, но, к сожалению, не начинает их парсить. Подскажите, как можно исправить это?
Заранее благодарю!

Ждем обновлений от прекрасного нашего разработчика) вот только начал внедрять эту прогу в работу. недолго продлилось)

          Привет. Да, видимо, 06.07.23 2GIS решил ввести капчу, т.к. слишком много людей стали использовать парсер и компания стала чувствовать убытки. Единственный выход - это подключение captcha-resolver сервиса, например [anti-captcha](https://anti-captcha.com). Если свободное время - сделаю, да и pull реквесты приветствуются.

Originally posted by @interlark in #32 (comment)

Парсер может собират информацию по адресу?

Парсер может собират информацию по адресу, по всем рубрикам и по всем компаниям на адресе, или по координатам?
Так-же может имеет смысл внедрить возможность выгрузки по всем рубрикам?

Ошибка при парсинге python

Может что-то доустановить нужно?? пробовал по разному (с рубриками, без, с запросом...) - всё время такая ошибка.
Во время запуска в соседнем окне открывается Хром, но там ничего не происходит, правда есть ошибка на ключ запуска.
постарался в одном скрине все вводные показать:
2gisParser
при этом файл .csv создаётся, но пустой, в нём только названия полей.
пробовал предыдущий ваш релиз запускать, такой же результат.
спасибо.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.