doing something
713 subscribers
919 photos
36 videos
36 files
1.95K links
@smlkw doing something, just my notes to keep updates
Download Telegram
doing something
Also, optimized it to monitor millions of addresses at once
also, added http_transmitter to send found transactions to your webhook
🐛 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 та інші
• Декларативне витягування даних через 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
💔1😐1💅1
🥴
😁7
TIL
🤣1
🗺
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏9