🐍 Простые фишки парсинга в Python
1️⃣ Парсинг больших JSON-файлов без загрузки в память
2️⃣ HTML-парсинг с поддержкой XPath через lxml
3️⃣ Парсинг логов с регулярками и именованными группами
4️⃣ Парсинг YAML c поддержкой типов
5️⃣ Парсинг бинарных данных (struct)
6️⃣ Парсинг HTML-таблиц напрямую в DataFrame (pandas)
🔥 Эти методы позволяют эффективно парсить большие JSON, бинарные форматы, HTML с XPath, YAML и даже таблицы прямо в pandas.
Используйте их, если обычных инструментов уже не хватает.
1️⃣ Парсинг больших JSON-файлов без загрузки в память
import ijson
with open("big.json", "r") as f:
for item in ijson.items(f, "records.item"):
print(item) # потоковый парсинг, не держим всё в памяти
2️⃣ HTML-парсинг с поддержкой XPath через lxml
from lxml import html
doc = html.fromstring("<div><span>Hello</span></div>")
print(doc.xpath("//span/text()")[0]) # Hello
3️⃣ Парсинг логов с регулярками и именованными группами
import re
line = '2025-08-23 12:10:45 [INFO] User=egor Action=login'
pattern = r'(?P<date>\d{4}-\d{2}-\d{2}) .* User=(?P<user>\w+) Action=(?P<action>\w+)'
m = re.search(pattern, line)
print(m.groupdict())
# {'date': '2025-08-23', 'user': 'egor', 'action': 'login'}
4️⃣ Парсинг YAML c поддержкой типов
import yaml
data = yaml.safe_load("""
user: egor
active: true
age: 30
""")
print(data) # {'user': 'egor', 'active': True, 'age': 30}
5️⃣ Парсинг бинарных данных (struct)
import struct
raw = b"\x01\x00\x00\x00\x2A\x00"
id, value = struct.unpack("<iH", raw)
print(id, value) # 1 42
6️⃣ Парсинг HTML-таблиц напрямую в DataFrame (pandas)
import pandas as pd
url = "https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)"
tables = pd.read_html(url)
print(tables[0].head()) # первая таблица со страницы
🔥 Эти методы позволяют эффективно парсить большие JSON, бинарные форматы, HTML с XPath, YAML и даже таблицы прямо в pandas.
Используйте их, если обычных инструментов уже не хватает.
🔥16❤10👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Когда отправляешь ты в сокет много маленьких кусочков - уходит куча мелких TCP-пакетов это работает медленнее и с задержками.
Решение: склеивай данные и отправляй одним блоком.
На Linux можно сказать ядру «подожди, я ещё допишу» команда MSG MORE.
Итог: меньше пакетов, быстрее отклик.
python
import socket
def send_coalesced(sock, parts):
for chunk in parts[:-1]:
sock.sendall(chunk, socket.MSG_MORE)
sock.sendall(parts[-1]) финальный flush
#Вот короткий пример как делать «плохо» и «хорошо»:
import socket
sock = socket.create_connection(("localhost", 9090))
# Плохо: много маленьких пакетов
sock.sendall(b"Hello, ")
sock.sendall(b"world")
sock.sendall(b"!\n")
# Хорошо: склеили всё и отправили одним пакетом
msg = b"".join([b"Hello, ", b"world", b"!\n"])
sock.sendall(msg)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤9👍4
Хотите вкатиться в ML или DS с нуля?
Сегодня стартует курс «Machine Learning. Basic» от OTUS! Это обучение — ваш шанс овладеть востребованными навыками и начать карьеру в области, которая меняет мир технологий. На курсе вы:
- Освоите Python для Data Science с нуля до профессионального уровня.
- Научитесь работать с ML-библиотеками: pandas, numpy, sklearn, и применять их для решения реальных задач.
- Освоите A/B-тестирование
- Научитесь решать реальные бизнес-задачи при помощи методов машинного обучения от задач классификации до ансамблей моделей
➡️ Осталось совсем немного времени, присоединяйтесь к курсу. Успейте по максимально выгодной цене месяца + примените дополнительный промокод ML_BASIC_5: https://tglink.io/4a60da8557a0?erid=2W5zFK8RwzG
#реклама
О рекламодателе
Сегодня стартует курс «Machine Learning. Basic» от OTUS! Это обучение — ваш шанс овладеть востребованными навыками и начать карьеру в области, которая меняет мир технологий. На курсе вы:
- Освоите Python для Data Science с нуля до профессионального уровня.
- Научитесь работать с ML-библиотеками: pandas, numpy, sklearn, и применять их для решения реальных задач.
- Освоите A/B-тестирование
- Научитесь решать реальные бизнес-задачи при помощи методов машинного обучения от задач классификации до ансамблей моделей
➡️ Осталось совсем немного времени, присоединяйтесь к курсу. Успейте по максимально выгодной цене месяца + примените дополнительный промокод ML_BASIC_5: https://tglink.io/4a60da8557a0?erid=2W5zFK8RwzG
#реклама
О рекламодателе
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Малоизвестный совет по Python: используй pyparsing вместо громоздких и тяжёлых regex.
Обычно все пишут через модуль re и собирают гигантские регулярки, которые сложно читать и отлаживать. Но есть библиотека pyparsing, где можно строить парсер как из конструктора — из простых правил.
Главная фишка: если в одном месте разбор сломался, pyparsing пробует другие варианты, а не падает. Это делает его удобным инструментом для разбора конфигов, мини-языков и любых сложных форматов текста, где regex становится болью.
Обычно все пишут через модуль re и собирают гигантские регулярки, которые сложно читать и отлаживать. Но есть библиотека pyparsing, где можно строить парсер как из конструктора — из простых правил.
Главная фишка: если в одном месте разбор сломался, pyparsing пробует другие варианты, а не падает. Это делает его удобным инструментом для разбора конфигов, мини-языков и любых сложных форматов текста, где regex становится болью.
from pyparsing import Word, alphas, nums, Group, OneOrMore
# Определим правило: слово + число
identifier = Word(alphas) + Word(nums)
# Парсер будет читать такие пары подряд
parser = OneOrMore(Group(identifier))
result = parser.parseString("user123 order456 item789")
print(result.asList())
# output:
🔥5❤4👍2