🐛 Silkworm: асинхронний вебскрапінг на Python з Rust під капотом
Потрібно швидко зібрати дані з сайтів без купи шаблонного коду? Знайомтеся з silkworm-rs. Це async-first фреймворк для скрапінгу й краулінгу, побудований на двох швидких бібліотеках:
⚡️ wreq — HTTP-клієнт з імітацією браузерів (TLS/HTTP2-відбитки), редиректами й проксі
🦀 scraper-rs — швидкий парсинг HTML на Rust (CSS-селектори та XPath)
Що всередині:
• Асинхронний рушій з налаштовуваною конкурентністю, пріоритетною чергою, backpressure і таймаутами
• Проста модель Spider / Request / Response. Колбеки можуть повертати і дані, і нові запити
• Middlewares: ротація User-Agent і проксі, cookies, retry з експоненційним backoff, затримки, robots.txt
• Pipelines з коробки: JSON Lines, CSV, SQLite, XML. Як extras: Parquet, Excel, MongoDB, PostgreSQL, Elasticsearch, S3, DuckDB та інші
• Декларативне витягування даних через
• Конвертація HTML → Markdown (зручно для LLM-пайплайнів 🤖)
• Опційно: рендеринг JS-сторінок через Servo і підтримка `.onion`-сайтів
• Запуск на asyncio, uvloop, winloop або trio
• Повна типізація, Python 3.13+, експериментальна підтримка free-threaded 3.14
Приклад, що збирає цитати з пагінацією:
Встановлення:
📖 Документація: https://bitingsnakes.github.io/silkworm/
⭐️ GitHub: https://github.com/BitingSnakes/silkworm
Потрібно швидко зібрати дані з сайтів без купи шаблонного коду? Знайомтеся з silkworm-rs. Це async-first фреймворк для скрапінгу й краулінгу, побудований на двох швидких бібліотеках:
⚡️ wreq — HTTP-клієнт з імітацією браузерів (TLS/HTTP2-відбитки), редиректами й проксі
🦀 scraper-rs — швидкий парсинг HTML на Rust (CSS-селектори та XPath)
Що всередині:
• Асинхронний рушій з налаштовуваною конкурентністю, пріоритетною чергою, backpressure і таймаутами
• Проста модель Spider / Request / Response. Колбеки можуть повертати і дані, і нові запити
• Middlewares: ротація User-Agent і проксі, cookies, retry з експоненційним backoff, затримки, robots.txt
• Pipelines з коробки: JSON Lines, CSV, SQLite, XML. Як extras: Parquet, Excel, MongoDB, PostgreSQL, Elasticsearch, S3, DuckDB та інші
• Декларативне витягування даних через
Item, Text, Attr• Конвертація HTML → Markdown (зручно для LLM-пайплайнів 🤖)
• Опційно: рендеринг JS-сторінок через Servo і підтримка `.onion`-сайтів
• Запуск на asyncio, uvloop, winloop або trio
• Повна типізація, Python 3.13+, експериментальна підтримка free-threaded 3.14
Приклад, що збирає цитати з пагінацією:
from silkworm import HTMLResponse, Response, Spider, run_spider
from silkworm.pipelines import JsonLinesPipeline
class QuotesSpider(Spider):
name = "quotes"
start_urls = ("https://quotes.toscrape.com/",)
async def parse(self, response: Response):
if not isinstance(response, HTMLResponse):
return
for q in await response.select(".quote"):
text = await q.select_first(".text")
author = await q.select_first(".author")
if text and author:
yield {"text": text.text, "author": author.text}
next_link = await response.select_first("li.next > a")
if next_link:
yield response.follow(next_link.attr("href"), callback=self.parse)
run_spider(QuotesSpider, item_pipelines=[JsonLinesPipeline("quotes.jl")])
Встановлення:
pip install silkworm-rs
📖 Документація: https://bitingsnakes.github.io/silkworm/
⭐️ GitHub: https://github.com/BitingSnakes/silkworm
👍3❤1🤩1
Forwarded from Bender Rodrigueslpe
🔥1
https://www.google.com/maps/@31.5350832,34.4572663,1243m/data=!3m1!1e3?entry=ttu&g_ep=EgoyMDI2MDkyMy4wIKXMDSoASAFQAw%3D%3D
Google has updated Maps, now it's seen how Gaza looks like after Israeli bombardment
Google has updated Maps, now it's seen how Gaza looks like after Israeli bombardment
💔1😐1💅1
doing something
https://www.google.com/maps/@31.5350832,34.4572663,1243m/data=!3m1!1e3?entry=ttu&g_ep=EgoyMDI2MDkyMy4wIKXMDSoASAFQAw%3D%3D Google has updated Maps, now it's seen how Gaza looks like after Israeli bombardment
https://www.google.com/maps/@48.5962269,38.002714,254m/data=!3m1!1e3?entry=ttu&g_ep=EgoyMDI2MDkyMy4wIKXMDSoASAFQAw%3D%3D
Bakhmut and other cities as well
Bakhmut and other cities as well
💔5
doing something
🐛 Silkworm: асинхронний вебскрапінг на Python з Rust під капотом Потрібно швидко зібрати дані з сайтів без купи шаблонного коду? Знайомтеся з silkworm-rs. Це async-first фреймворк для скрапінгу й краулінгу, побудований на двох швидких бібліотеках: ⚡️ wreq…
Додав підтримку Apache Iggy та скіли для агентів щоб використовувати цей фреймворк
doing something
https://github.com/MarcinZukowski/pivco-huffman
GitHub
Release OpenZL v0.3.0 · facebook/openzl
The headline changes for v0.3.0 are a major upgrade of the native LZ engine, and the Compression Transformer, a neural selector that builds numeric compression graphs on the fly.
LZ Improvements
Op...
LZ Improvements
Op...
Forwarded from Хата Радіотата
GitHub
GitHub - ESPARGOS/esp-sdr: ESP-SDR uses the undocumented raw I/Q capture functionality of ESP32 family chips to turn them into…
ESP-SDR uses the undocumented raw I/Q capture functionality of ESP32 family chips to turn them into (low-duty-cycle) Software Defined Radios - ESPARGOS/esp-sdr
Помітили цікавий проєкт ESP-SDR. Він перетворює звичайний ESP32 на SDR-приймач без зовнішнього радіомодуля.
Прошивка обходить стандартний Wi-Fi/Bluetooth modem і напряму використовує внутрішній ADC-ланцюг для отримання сирих I/Q семплів базового сигналу. Далі дані передаються на ПК через USB або UART, де їх можна бачити як спектр чи waterfall прямо у браузері через ESP-WebSDR.
Підтримуються ESP32, ESP32-C3, C5, C6, C61, S2, S3 та S31. Діапазон залежить від чіпа: основний діапазон 2,4 ГГц, а ESP32-C5 додатково працює з 5 ГГц приблизно від 4,8 до 6 ГГц. Максимальна частота дискретизації сягає 80 MSa/s при смузі приблизно 13–54 МГц.
Є навіть FFT прямо на ESP32, тому замість величезного потоку I/Q можна передавати вже готові спектральні дані. Проблема саме в пропускній здатності: 80 MSa/s створює близько 2,56 Гбіт/с сирих даних, тому USB та UART не здатні передавати весь потік. Для постійного стрімінгу розробники працюють над версією під ESP32-S31 через Gigabit Ethernet(Хоча в багатьох платах з ESP32-P4 стоїть в базі C6 або C3 і можна об'єднати в теорії)
Цікаво, що проєкт знайшли під час розробки ESPARGOS One, де кілька ESP32 використовуються як багатоканальна SDR-система для виявлення та позиціонування сигналів Bluetooth LE і Zigbee.
По суті, за кілька доларів отримуємо простий SDR-аналізатор 2,4/5 ГГц просто з ESP32, без RTL-SDR чи іншого зовнішнього радіоприймача.
Хата Радіотата
Прошивка обходить стандартний Wi-Fi/Bluetooth modem і напряму використовує внутрішній ADC-ланцюг для отримання сирих I/Q семплів базового сигналу. Далі дані передаються на ПК через USB або UART, де їх можна бачити як спектр чи waterfall прямо у браузері через ESP-WebSDR.
Підтримуються ESP32, ESP32-C3, C5, C6, C61, S2, S3 та S31. Діапазон залежить від чіпа: основний діапазон 2,4 ГГц, а ESP32-C5 додатково працює з 5 ГГц приблизно від 4,8 до 6 ГГц. Максимальна частота дискретизації сягає 80 MSa/s при смузі приблизно 13–54 МГц.
Є навіть FFT прямо на ESP32, тому замість величезного потоку I/Q можна передавати вже готові спектральні дані. Проблема саме в пропускній здатності: 80 MSa/s створює близько 2,56 Гбіт/с сирих даних, тому USB та UART не здатні передавати весь потік. Для постійного стрімінгу розробники працюють над версією під ESP32-S31 через Gigabit Ethernet(Хоча в багатьох платах з ESP32-P4 стоїть в базі C6 або C3 і можна об'єднати в теорії)
Цікаво, що проєкт знайшли під час розробки ESPARGOS One, де кілька ESP32 використовуються як багатоканальна SDR-система для виявлення та позиціонування сигналів Bluetooth LE і Zigbee.
По суті, за кілька доларів отримуємо простий SDR-аналізатор 2,4/5 ГГц просто з ESP32, без RTL-SDR чи іншого зовнішнього радіоприймача.
Хата Радіотата
🔥3