Comments (6)
Я понимаю, что вопрос кроется в памяти (скорее всего). Но возможно ли просто разбивать каким-либо образом файл в записи? Чтобы не ранить все записи в памяти до момента записи в файл. Это явно усложняет все в плане оптимизации
from parser-2gis.
Я сделяль.
Я надеюсь это кому-то пригодиться (тем более я видел стэк с такой проблемой у других пользователей в закрытых ранее)
Нужно заменить код в json_writter.py на этот:
from __future__ import annotations
import json
import os
from typing import Any
from ...logger import logger
from .file_writer import FileWriter
class JSONWriter(FileWriter):
"""Writer to JSON file."""
def __init__(self, filename: str, options: dict = None) -> None:
super().__init__(filename, options)
self._wrote_count = 0
self._filename = filename
def __enter__(self) -> JSONWriter:
super().__enter__()
self._wrote_count = 0
self._file.write('[')
return self
def __exit__(self, *exc_info) -> None:
if self._wrote_count > 0:
self._file.write(os.linesep)
self._file.write(']')
super().__exit__(*exc_info)
def _writedoc(self, catalog_doc: Any) -> None:
"""Write a `catalog_doc` into JSON document."""
item = catalog_doc['result']['items'][0]
if self._options.verbose:
try:
name = item['name_ex']['primary']
except KeyError:
name = '...'
logger.info('Парсинг [%d] > %s', self._wrote_count + 1, name)
# Записываем каждую запись в файл сразу же
with open(self._filename, 'a', encoding='utf-8') as f:
if self._wrote_count > 0:
f.write(',')
f.write(os.linesep)
f.write(json.dumps(item, ensure_ascii=False))
self._wrote_count += 1
def write(self, catalog_doc: Any) -> None:
"""Write Catalog Item API JSON document down to JSON file.
Args:
catalog_doc: Catalog Item API JSON document.
"""
if not self._check_catalog_doc(catalog_doc):
return
self._writedoc(catalog_doc)
Тут я написал все так, чтобы результат сразу записывался в json файл и не хранился в памяти. А далее он просто обновлялся в конец json. Мне помогло :)
from parser-2gis.
А нет. Ошибка правда не в оперативной памяти. Она держалась оптимально, но на отметке в 2800 все равно обрывает постоянно. Дело кажется в чем-то другом.
from parser-2gis.
А нет. Ошибка правда не в оперативной памяти. Она держалась оптимально, но на отметке в 2800 все равно обрывает постоянно. Дело кажется в чем-то другом.
Ошибка в том что 2гис выводит все на одной странице и памяти не хватает не в буфере обмена, а чтобы прогружать эту страницу с несколькими тысячами записей
from parser-2gis.
У кого-то получилось решить данную проблему?
from parser-2gis.
Дублика #41, нужна доработка с восстановлением работы с последней страницы.
from parser-2gis.
Related Issues (20)
- Не получается установить на макОС HOT 2
- Была бы возможность выбирать какие данные собирать, например только emailы и чтобы в логах видно было сколько собрано HOT 1
- Вопрос по Google Maps и Яндекс Картам HOT 2
- не собирает контакты HOT 1
- error HOT 1
- exception in decoder HOT 1
- Дополнителнить географическими объектами HOT 2
- Парсинг автобусных остановок из 2ГИС HOT 1
- Парсер парковок HOT 1
- Парсер не запускается HOT 2
- Не работает на макос 14.3 HOT 5
- Не открывается на Мак ОС 12.7.4
- calling method: DOM.resolveNode error
- Неверные ссылки
- нужно каждую рубрику цокать кликать мышкой
- превышено время ожидания
- Не работает на kali linux.
- Ошибка во время работы парсера. HOT 2
- Ошибка во время работы парсера HOT 1
- Ошибка во время работы парсинга
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from parser-2gis.