crawlingo 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- crawlingo-0.1.2/.github/CRAWLINGO_DEVELOPER_HANDBOOK.md +62 -0
- crawlingo-0.1.2/.github/board.tldr +1749 -0
- crawlingo-0.1.2/.github/build-merge.js +57 -0
- crawlingo-0.1.2/.github/workflows/ci.yml +185 -0
- crawlingo-0.1.2/.github/workflows/release.yml +270 -0
- crawlingo-0.1.2/.gitignore +69 -0
- crawlingo-0.1.2/Cargo.lock +4173 -0
- crawlingo-0.1.2/Cargo.toml +95 -0
- crawlingo-0.1.2/LICENSE +21 -0
- crawlingo-0.1.2/Makefile +64 -0
- crawlingo-0.1.2/PKG-INFO +227 -0
- crawlingo-0.1.2/README.md +965 -0
- crawlingo-0.1.2/benches/auto_matcher.rs +38 -0
- crawlingo-0.1.2/benches/fetcher.rs +21 -0
- crawlingo-0.1.2/benches/scorer.rs +21 -0
- crawlingo-0.1.2/benches/selector.rs +26 -0
- crawlingo-0.1.2/crawlingo/__init__.py +53 -0
- crawlingo-0.1.2/crawlingo/_crawlingo_core.pyi +131 -0
- crawlingo-0.1.2/crawlingo/cli.py +122 -0
- crawlingo-0.1.2/crawlingo/crawl.py +168 -0
- crawlingo-0.1.2/crawlingo/dataset.py +146 -0
- crawlingo-0.1.2/crawlingo/download.py +88 -0
- crawlingo-0.1.2/crawlingo/element.py +148 -0
- crawlingo-0.1.2/crawlingo/exceptions.py +74 -0
- crawlingo-0.1.2/crawlingo/hooks.py +24 -0
- crawlingo-0.1.2/crawlingo/mcp.py +321 -0
- crawlingo-0.1.2/crawlingo/page.py +181 -0
- crawlingo-0.1.2/crawlingo/py.typed +1 -0
- crawlingo-0.1.2/crawlingo/session.py +213 -0
- crawlingo-0.1.2/crawlingo/sitemap.py +104 -0
- crawlingo-0.1.2/crawlingo/types.py +5 -0
- crawlingo-0.1.2/crawlingo/watch.py +102 -0
- crawlingo-0.1.2/crawlingo-docs/.gitignore +8 -0
- crawlingo-0.1.2/crawlingo-docs/eslint.config.mjs +4 -0
- crawlingo-0.1.2/crawlingo-docs/install-docs.sh +1 -0
- crawlingo-0.1.2/crawlingo-docs/netlify.toml +22 -0
- crawlingo-0.1.2/crawlingo-docs/next.config.mjs +40 -0
- crawlingo-0.1.2/crawlingo-docs/package.json +45 -0
- crawlingo-0.1.2/crawlingo-docs/postcss.config.mjs +11 -0
- crawlingo-0.1.2/crawlingo-docs/public/crawlingo.jpg +0 -0
- crawlingo-0.1.2/crawlingo-docs/public/crawlingo_demo.gif +0 -0
- crawlingo-0.1.2/crawlingo-docs/public/crawlingo_demo.webp +0 -0
- crawlingo-0.1.2/crawlingo-docs/public/logo.svg +612 -0
- crawlingo-0.1.2/crawlingo-docs/src/app/layout.tsx +15 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/copy-button.tsx +30 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/feature-card.tsx +143 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/layout.tsx +229 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/sidebar-trigger.tsx +38 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/tabs.tsx +105 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/theme-provider.tsx +9 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/ui/badge.tsx +40 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/ui/button.tsx +54 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/ui/card.tsx +101 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/ui-badge.tsx +35 -0
- crawlingo-0.1.2/crawlingo-docs/src/components/ui-card.tsx +141 -0
- crawlingo-0.1.2/crawlingo-docs/src/lib/utils.ts +6 -0
- crawlingo-0.1.2/crawlingo-docs/src/pages/features.tsx +310 -0
- crawlingo-0.1.2/crawlingo-docs/src/pages/index.tsx +253 -0
- crawlingo-0.1.2/crawlingo-docs/src/pages/quick-start.tsx +236 -0
- crawlingo-0.1.2/crawlingo-docs/tailwind.config.ts +176 -0
- crawlingo-0.1.2/crawlingo-docs/tsconfig.json +22 -0
- crawlingo-0.1.2/crawlingo-docs/vercel.json +14 -0
- crawlingo-0.1.2/crawlingo.jpg +0 -0
- crawlingo-0.1.2/crawlingo_demo.gif +0 -0
- crawlingo-0.1.2/crawlingo_demo.webp +0 -0
- crawlingo-0.1.2/docs/advanced.md +172 -0
- crawlingo-0.1.2/docs/authentication.md +85 -0
- crawlingo-0.1.2/docs/auto-match.md +85 -0
- crawlingo-0.1.2/docs/change-detection.md +85 -0
- crawlingo-0.1.2/docs/configuration.md +96 -0
- crawlingo-0.1.2/docs/crawl.md +118 -0
- crawlingo-0.1.2/docs/dataset.md +135 -0
- crawlingo-0.1.2/docs/faq.md +128 -0
- crawlingo-0.1.2/docs/getting-started.md +90 -0
- crawlingo-0.1.2/docs/index.md +45 -0
- crawlingo-0.1.2/docs/installation.md +80 -0
- crawlingo-0.1.2/docs/page.md +179 -0
- crawlingo-0.1.2/docs/sdk-nodejs.md +149 -0
- crawlingo-0.1.2/docs/sdk-python.md +129 -0
- crawlingo-0.1.2/docs/selectors.md +97 -0
- crawlingo-0.1.2/docs/session.md +85 -0
- crawlingo-0.1.2/docs/watch.md +102 -0
- crawlingo-0.1.2/document/00_PROJECT_STATUS.md +52 -0
- crawlingo-0.1.2/document/01_ARCHITECTURE.md +162 -0
- crawlingo-0.1.2/document/02_CODEBASE_MAP.md +123 -0
- crawlingo-0.1.2/document/03_ENGINEERING_AUDIT.md +117 -0
- crawlingo-0.1.2/document/04_TECHNICAL_DEBT.md +120 -0
- crawlingo-0.1.2/document/05_ROADMAP.md +89 -0
- crawlingo-0.1.2/document/06_DEVELOPMENT_GUIDE.md +113 -0
- crawlingo-0.1.2/document/07_CONTRIBUTING_GUIDE.md +44 -0
- crawlingo-0.1.2/document/08_TESTING_GUIDE.md +74 -0
- crawlingo-0.1.2/document/09_RELEASE_GUIDE.md +75 -0
- crawlingo-0.1.2/document/10_PERFORMANCE.md +46 -0
- crawlingo-0.1.2/document/11_SECURITY_REVIEW.md +45 -0
- crawlingo-0.1.2/document/12_API_DESIGN.md +279 -0
- crawlingo-0.1.2/document/13_FEATURE_INDEX.md +61 -0
- crawlingo-0.1.2/document/14_CHANGELOG_INTERNAL.md +27 -0
- crawlingo-0.1.2/document/15_AGENT_MEMORY.md +30 -0
- crawlingo-0.1.2/document/16_DESIGN_DECISIONS.md +45 -0
- crawlingo-0.1.2/document/17_CODE_STYLE.md +49 -0
- crawlingo-0.1.2/document/18_BUG_TRACKER.md +33 -0
- crawlingo-0.1.2/document/19_IDEAS.md +21 -0
- crawlingo-0.1.2/document/20_PRODUCTION_CHECKLIST.md +32 -0
- crawlingo-0.1.2/document/21_EXECUTION_FLOW.md +91 -0
- crawlingo-0.1.2/document/22_DATA_FLOW.md +37 -0
- crawlingo-0.1.2/document/23_MODULE_DEPENDENCY.md +69 -0
- crawlingo-0.1.2/document/24_PAGE_MODEL.md +59 -0
- crawlingo-0.1.2/document/25_FETCH_PIPELINE.md +77 -0
- crawlingo-0.1.2/document/26_PARSER_PIPELINE.md +64 -0
- crawlingo-0.1.2/document/27_SELECTOR_ENGINE.md +49 -0
- crawlingo-0.1.2/document/28_DATASET_ENGINE.md +63 -0
- crawlingo-0.1.2/document/29_PLUGIN_SYSTEM.md +93 -0
- crawlingo-0.1.2/document/30_DIRECTORY_GUIDE.md +52 -0
- crawlingo-0.1.2/document/31_CODE_OWNERSHIP.md +37 -0
- crawlingo-0.1.2/document/32_RUNTIME.md +49 -0
- crawlingo-0.1.2/document/33_REFACTOR_STRATEGY.md +38 -0
- crawlingo-0.1.2/document/34_ARCHITECTURE_DECISIONS.md +39 -0
- crawlingo-0.1.2/document/35_ENGINE_SCORECARD.md +48 -0
- crawlingo-0.1.2/document/CLEANUP_REPORT.md +68 -0
- crawlingo-0.1.2/document/CODEBASE_CLEANUP.md +42 -0
- crawlingo-0.1.2/document/CORE_ARCHITECTURE.md +91 -0
- crawlingo-0.1.2/document/CORE_REFACTOR_ANALYSIS.md +75 -0
- crawlingo-0.1.2/document/DATASET_ENGINE_V2.md +100 -0
- crawlingo-0.1.2/document/DEPENDENCY_AUDIT.md +59 -0
- crawlingo-0.1.2/document/DEPENDENCY_GRAPH_V2.md +66 -0
- crawlingo-0.1.2/document/EXTRACTION_ENGINE_V2.md +128 -0
- crawlingo-0.1.2/document/FETCH_DESIGN.md +134 -0
- crawlingo-0.1.2/document/FETCH_REDESIGN.md +137 -0
- crawlingo-0.1.2/document/MASTER_INDEX.md +64 -0
- crawlingo-0.1.2/document/MASTER_ROADMAP.md +84 -0
- crawlingo-0.1.2/document/NEW_ARCHITECTURE.md +92 -0
- crawlingo-0.1.2/document/PAGE_DESIGN.md +104 -0
- crawlingo-0.1.2/document/PAGE_MODEL_V2.md +98 -0
- crawlingo-0.1.2/document/PARSER_V2.md +96 -0
- crawlingo-0.1.2/document/PROJECT_AUDIT.md +321 -0
- crawlingo-0.1.2/document/REFACTOR_PLAN.md +53 -0
- crawlingo-0.1.2/document/REFACTOR_PROGRESS.md +61 -0
- crawlingo-0.1.2/document/SELECTOR_ENGINE_V2.md +79 -0
- crawlingo-0.1.2/document/api_reference/auto_matcher.md +48 -0
- crawlingo-0.1.2/document/api_reference/cli.md +68 -0
- crawlingo-0.1.2/document/api_reference/crawler.md +72 -0
- crawlingo-0.1.2/document/api_reference/dataset.md +86 -0
- crawlingo-0.1.2/document/api_reference/dom_tree.md +50 -0
- crawlingo-0.1.2/document/api_reference/fetch.md +54 -0
- crawlingo-0.1.2/document/api_reference/fingerprint.md +50 -0
- crawlingo-0.1.2/document/api_reference/mcp.md +55 -0
- crawlingo-0.1.2/document/api_reference/page.md +87 -0
- crawlingo-0.1.2/document/api_reference/sdk_nodejs.md +161 -0
- crawlingo-0.1.2/document/api_reference/sdk_python.md +86 -0
- crawlingo-0.1.2/document/api_reference/selector_engine.md +50 -0
- crawlingo-0.1.2/document/api_reference/session.md +69 -0
- crawlingo-0.1.2/document/api_reference/watcher.md +66 -0
- crawlingo-0.1.2/document/developer_guide/01_architecture_overview.md +85 -0
- crawlingo-0.1.2/document/developer_guide/02_development_setup.md +65 -0
- crawlingo-0.1.2/document/developer_guide/03_codebase_map.md +64 -0
- crawlingo-0.1.2/document/developer_guide/04_testing.md +65 -0
- crawlingo-0.1.2/document/developer_guide/05_release.md +51 -0
- crawlingo-0.1.2/document/developer_guide/06_contributing.md +41 -0
- crawlingo-0.1.2/document/developer_guide/07_code_style.md +39 -0
- crawlingo-0.1.2/document/developer_guide/08_design_decisions.md +46 -0
- crawlingo-0.1.2/document/developer_guide/09_production_deployment.md +40 -0
- crawlingo-0.1.2/document/index.md +46 -0
- crawlingo-0.1.2/document/user_guide/01_getting_started.md +59 -0
- crawlingo-0.1.2/document/user_guide/02_fetch_and_select.md +112 -0
- crawlingo-0.1.2/document/user_guide/03_dataset_extraction.md +69 -0
- crawlingo-0.1.2/document/user_guide/04_auto_healing.md +59 -0
- crawlingo-0.1.2/document/user_guide/05_crawling.md +75 -0
- crawlingo-0.1.2/document/user_guide/06_change_detection.md +81 -0
- crawlingo-0.1.2/examples/01_simple.js +44 -0
- crawlingo-0.1.2/examples/01_simple.py +42 -0
- crawlingo-0.1.2/examples/02_dataset.js +38 -0
- crawlingo-0.1.2/examples/02_dataset.py +38 -0
- crawlingo-0.1.2/examples/03_crawler.js +37 -0
- crawlingo-0.1.2/examples/03_crawler.py +37 -0
- crawlingo-0.1.2/examples/04_monitor.js +40 -0
- crawlingo-0.1.2/examples/04_monitor.py +44 -0
- crawlingo-0.1.2/examples/05_hooks.py +33 -0
- crawlingo-0.1.2/examples/05_session.js +29 -0
- crawlingo-0.1.2/examples/06_dataset_advanced.js +38 -0
- crawlingo-0.1.2/examples/06_session.py +37 -0
- crawlingo-0.1.2/examples/07_authentication.py +44 -0
- crawlingo-0.1.2/examples/08_price_extraction.py +48 -0
- crawlingo-0.1.2/examples/09_dataset_schema.py +42 -0
- crawlingo-0.1.2/logo.svg +612 -0
- crawlingo-0.1.2/package-lock.json +12 -0
- crawlingo-0.1.2/package.json +27 -0
- crawlingo-0.1.2/pyproject.toml +48 -0
- crawlingo-0.1.2/rust-toolchain.toml +3 -0
- crawlingo-0.1.2/sdk/nodejs/README.md +156 -0
- crawlingo-0.1.2/sdk/nodejs/crawlingo-native.win32-x64-msvc.node +0 -0
- crawlingo-0.1.2/sdk/nodejs/package-lock.json +66 -0
- crawlingo-0.1.2/sdk/nodejs/package.json +35 -0
- crawlingo-0.1.2/sdk/nodejs/scripts/copy-native-assets.cjs +21 -0
- crawlingo-0.1.2/sdk/nodejs/src/crawl.ts +70 -0
- crawlingo-0.1.2/sdk/nodejs/src/dataset.ts +104 -0
- crawlingo-0.1.2/sdk/nodejs/src/download.ts +80 -0
- crawlingo-0.1.2/sdk/nodejs/src/element.ts +54 -0
- crawlingo-0.1.2/sdk/nodejs/src/index.ts +10 -0
- crawlingo-0.1.2/sdk/nodejs/src/native.d.ts +141 -0
- crawlingo-0.1.2/sdk/nodejs/src/native.js +328 -0
- crawlingo-0.1.2/sdk/nodejs/src/page.ts +75 -0
- crawlingo-0.1.2/sdk/nodejs/src/session.ts +79 -0
- crawlingo-0.1.2/sdk/nodejs/src/sitemap.ts +95 -0
- crawlingo-0.1.2/sdk/nodejs/src/watch.ts +56 -0
- crawlingo-0.1.2/sdk/nodejs/tests/amazon-scrape.cjs +329 -0
- crawlingo-0.1.2/sdk/nodejs/tests/browser_profiles.test.cjs +32 -0
- crawlingo-0.1.2/sdk/nodejs/tests/cookies.test.cjs +33 -0
- crawlingo-0.1.2/sdk/nodejs/tests/dataset.test.cjs +97 -0
- crawlingo-0.1.2/sdk/nodejs/tests/downloads.test.cjs +73 -0
- crawlingo-0.1.2/sdk/nodejs/tests/errors.test.cjs +79 -0
- crawlingo-0.1.2/sdk/nodejs/tests/fetchers.test.cjs +54 -0
- crawlingo-0.1.2/sdk/nodejs/tests/headers.test.cjs +30 -0
- crawlingo-0.1.2/sdk/nodejs/tests/helpers/harness.cjs +113 -0
- crawlingo-0.1.2/sdk/nodejs/tests/integration.test.cjs +38 -0
- crawlingo-0.1.2/sdk/nodejs/tests/legacy/test_all_apis.cjs +616 -0
- crawlingo-0.1.2/sdk/nodejs/tests/mocks/mock_server.cjs +271 -0
- crawlingo-0.1.2/sdk/nodejs/tests/output/downloaded_test.bin +1 -0
- crawlingo-0.1.2/sdk/nodejs/tests/output/result_out.json +4 -0
- crawlingo-0.1.2/sdk/nodejs/tests/output/resume_test.bin +1 -0
- crawlingo-0.1.2/sdk/nodejs/tests/output/test_output.json +10 -0
- crawlingo-0.1.2/sdk/nodejs/tests/page.test.cjs +26 -0
- crawlingo-0.1.2/sdk/nodejs/tests/performance.test.cjs +41 -0
- crawlingo-0.1.2/sdk/nodejs/tests/proxy.test.cjs +35 -0
- crawlingo-0.1.2/sdk/nodejs/tests/reporters/html.cjs +216 -0
- crawlingo-0.1.2/sdk/nodejs/tests/reporters/json.cjs +40 -0
- crawlingo-0.1.2/sdk/nodejs/tests/reporters/junit.cjs +57 -0
- crawlingo-0.1.2/sdk/nodejs/tests/reports/junit.xml +242 -0
- crawlingo-0.1.2/sdk/nodejs/tests/reports/report.html +1201 -0
- crawlingo-0.1.2/sdk/nodejs/tests/reports/report.json +881 -0
- crawlingo-0.1.2/sdk/nodejs/tests/retry.test.cjs +20 -0
- crawlingo-0.1.2/sdk/nodejs/tests/sdk_parity.test.cjs +147 -0
- crawlingo-0.1.2/sdk/nodejs/tests/selectors.test.cjs +71 -0
- crawlingo-0.1.2/sdk/nodejs/tests/session.test.cjs +43 -0
- crawlingo-0.1.2/sdk/nodejs/tests/sitemap.test.cjs +60 -0
- crawlingo-0.1.2/sdk/nodejs/tests/smoke.cjs +10 -0
- crawlingo-0.1.2/sdk/nodejs/tests/test_all.cjs +176 -0
- crawlingo-0.1.2/sdk/nodejs/tsconfig.json +16 -0
- crawlingo-0.1.2/sdk/python/README.md +212 -0
- crawlingo-0.1.2/sdk/python/crawlingo/__init__.py +53 -0
- crawlingo-0.1.2/sdk/python/crawlingo/_crawlingo_core.pyi +131 -0
- crawlingo-0.1.2/sdk/python/crawlingo/cli.py +122 -0
- crawlingo-0.1.2/sdk/python/crawlingo/crawl.py +168 -0
- crawlingo-0.1.2/sdk/python/crawlingo/dataset.py +146 -0
- crawlingo-0.1.2/sdk/python/crawlingo/download.py +88 -0
- crawlingo-0.1.2/sdk/python/crawlingo/element.py +148 -0
- crawlingo-0.1.2/sdk/python/crawlingo/exceptions.py +74 -0
- crawlingo-0.1.2/sdk/python/crawlingo/hooks.py +24 -0
- crawlingo-0.1.2/sdk/python/crawlingo/mcp.py +321 -0
- crawlingo-0.1.2/sdk/python/crawlingo/page.py +181 -0
- crawlingo-0.1.2/sdk/python/crawlingo/py.typed +1 -0
- crawlingo-0.1.2/sdk/python/crawlingo/session.py +213 -0
- crawlingo-0.1.2/sdk/python/crawlingo/sitemap.py +104 -0
- crawlingo-0.1.2/sdk/python/crawlingo/types.py +5 -0
- crawlingo-0.1.2/sdk/python/crawlingo/watch.py +102 -0
- crawlingo-0.1.2/sdk/python/pyproject.toml +48 -0
- crawlingo-0.1.2/sdk/python/tests/_crawlingo_test.json +4 -0
- crawlingo-0.1.2/sdk/python/tests/_dataset_output.json +4 -0
- crawlingo-0.1.2/sdk/python/tests/test_all_apis.py +1048 -0
- crawlingo-0.1.2/sdk/python/tests/test_import.py +18 -0
- crawlingo-0.1.2/src/bin/crawlingo.rs +457 -0
- crawlingo-0.1.2/src/change/detector.rs +204 -0
- crawlingo-0.1.2/src/change/mod.rs +1 -0
- crawlingo-0.1.2/src/config/mod.rs +322 -0
- crawlingo-0.1.2/src/crawl/crawler.rs +393 -0
- crawlingo-0.1.2/src/crawl/frontier.rs +242 -0
- crawlingo-0.1.2/src/crawl/mod.rs +4 -0
- crawlingo-0.1.2/src/crawl/pagination.rs +305 -0
- crawlingo-0.1.2/src/crawl/sitemap.rs +447 -0
- crawlingo-0.1.2/src/dataset/builder.rs +552 -0
- crawlingo-0.1.2/src/dataset/export.rs +127 -0
- crawlingo-0.1.2/src/dataset/mod.rs +4 -0
- crawlingo-0.1.2/src/dataset/schema.rs +125 -0
- crawlingo-0.1.2/src/dataset/stream.rs +272 -0
- crawlingo-0.1.2/src/engine/auth.rs +381 -0
- crawlingo-0.1.2/src/engine/cache.rs +397 -0
- crawlingo-0.1.2/src/engine/download.rs +380 -0
- crawlingo-0.1.2/src/engine/fetcher.rs +922 -0
- crawlingo-0.1.2/src/engine/middleware.rs +204 -0
- crawlingo-0.1.2/src/engine/mod.rs +9 -0
- crawlingo-0.1.2/src/engine/pool.rs +69 -0
- crawlingo-0.1.2/src/engine/rate_limiter.rs +74 -0
- crawlingo-0.1.2/src/engine/retry.rs +204 -0
- crawlingo-0.1.2/src/engine/session.rs +866 -0
- crawlingo-0.1.2/src/error.rs +71 -0
- crawlingo-0.1.2/src/extraction/mod.rs +146 -0
- crawlingo-0.1.2/src/fingerprint/dom.rs +135 -0
- crawlingo-0.1.2/src/fingerprint/mod.rs +2 -0
- crawlingo-0.1.2/src/fingerprint/store.rs +102 -0
- crawlingo-0.1.2/src/lib.rs +517 -0
- crawlingo-0.1.2/src/matcher/auto_matcher.rs +97 -0
- crawlingo-0.1.2/src/matcher/mod.rs +2 -0
- crawlingo-0.1.2/src/matcher/scorer.rs +222 -0
- crawlingo-0.1.2/src/metrics/mod.rs +277 -0
- crawlingo-0.1.2/src/parser/document.rs +716 -0
- crawlingo-0.1.2/src/parser/mod.rs +2 -0
- crawlingo-0.1.2/src/parser/streaming.rs +155 -0
- crawlingo-0.1.2/src/selector/css.rs +394 -0
- crawlingo-0.1.2/src/selector/mod.rs +34 -0
- crawlingo-0.1.2/src/selector/regex_selector.rs +51 -0
- crawlingo-0.1.2/src/selector/text_anchor.rs +109 -0
- crawlingo-0.1.2/src/selector/xpath.rs +195 -0
- crawlingo-0.1.2/src/watch/mod.rs +1 -0
- crawlingo-0.1.2/src/watch/monitor.rs +221 -0
- crawlingo-0.1.2/tests/client_pool_test.rs +142 -0
- crawlingo-0.1.2/tests/edge_cases_test.rs +176 -0
- crawlingo-0.1.2/tests/fixtures/changed.html +25 -0
- crawlingo-0.1.2/tests/fixtures/edge_cases.html +155 -0
- crawlingo-0.1.2/tests/fixtures/simple.html +19 -0
- crawlingo-0.1.2/tests/integration_test.rs +95 -0
- crawlingo-0.1.2/tests/mock_transport_test.rs +258 -0
- crawlingo-0.1.2/waitlist/.env.example +9 -0
- crawlingo-0.1.2/waitlist/.gitignore +5 -0
- crawlingo-0.1.2/waitlist/api/waitlist.js +234 -0
- crawlingo-0.1.2/waitlist/index.html +16 -0
- crawlingo-0.1.2/waitlist/package-lock.json +2893 -0
- crawlingo-0.1.2/waitlist/package.json +34 -0
- crawlingo-0.1.2/waitlist/postcss.config.js +6 -0
- crawlingo-0.1.2/waitlist/public/logo.svg +612 -0
- crawlingo-0.1.2/waitlist/src/App.tsx +20 -0
- crawlingo-0.1.2/waitlist/src/components/layout/Header.tsx +68 -0
- crawlingo-0.1.2/waitlist/src/components/ui/BackgroundGrid.tsx +36 -0
- crawlingo-0.1.2/waitlist/src/components/ui/EagleLogo.tsx +35 -0
- crawlingo-0.1.2/waitlist/src/lib/utils.ts +6 -0
- crawlingo-0.1.2/waitlist/src/main.tsx +10 -0
- crawlingo-0.1.2/waitlist/src/pages/WaitlistPage.tsx +253 -0
- crawlingo-0.1.2/waitlist/src/styles/globals.css +330 -0
- crawlingo-0.1.2/waitlist/tailwind.config.js +80 -0
- crawlingo-0.1.2/waitlist/tsconfig.json +29 -0
- crawlingo-0.1.2/waitlist/vercel.json +17 -0
- crawlingo-0.1.2/waitlist/vite.config.js +100 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Crawlingo Developer Handbook
|
|
2
|
+
|
|
3
|
+
This developer handbook serves as your resource for understanding, extending, and debugging Crawlingo.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. System Architecture Overview
|
|
8
|
+
|
|
9
|
+
Crawlingo is a multi-language library wrapper built around a high-performance core Rust engine.
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
graph TD
|
|
13
|
+
subgraph Client SDKs
|
|
14
|
+
Python["Python SDK"]
|
|
15
|
+
NodeJS["Node.js SDK"]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
subgraph FFI Wrapper Layer
|
|
19
|
+
PyO3["PyO3 Bindings"]
|
|
20
|
+
NAPI["NAPI-RS Bindings"]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
subgraph Core Rust Engine
|
|
24
|
+
Fetcher["Fetcher & Connection Pool"]
|
|
25
|
+
DomTree["Flat Vec DomTree"]
|
|
26
|
+
Selectors["Selector Engines CSS/XPath/Regex/SIMD"]
|
|
27
|
+
AutoMatcher["Fuzzy Selector Healer"]
|
|
28
|
+
SledStore["Sled Database"]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Python --> PyO3
|
|
32
|
+
NodeJS --> NAPI
|
|
33
|
+
PyO3 --> Fetcher
|
|
34
|
+
NAPI --> Fetcher
|
|
35
|
+
Fetcher --> DomTree
|
|
36
|
+
DomTree --> Selectors
|
|
37
|
+
Selectors -- Fallback --> AutoMatcher
|
|
38
|
+
AutoMatcher --> SledStore
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 2. Core Design Decisions
|
|
44
|
+
|
|
45
|
+
### Flat DOM Tree Representation
|
|
46
|
+
To optimize heap allocation overhead, the HTML document is parsed into a flat vector `Vec<DomNode>`. Relationships are stored as `usize` index offsets, eliminating recursive pointers and cycle-reference memory leaks in Rust.
|
|
47
|
+
|
|
48
|
+
### Native wrappers (FFI)
|
|
49
|
+
Crawlingo compiles to native binary extensions for Python (via `PyO3`) and Node.js (via `napi-rs`). FFI boundary methods share elements using flat node indices, bypassing the need to copy HTML strings across languages.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. Directory Map
|
|
54
|
+
|
|
55
|
+
- `/src/engine`: Manages networking via `wreq`, session states, DNS cache, and token-bucket host rate limiting.
|
|
56
|
+
- `/src/parser`: Streaming parser constructed on top of `lol_html`.
|
|
57
|
+
- `/src/selector`: Resolves elements matching CSS, XPath, Regex patterns, or SIMD-accelerated text anchors.
|
|
58
|
+
- `/src/matcher`: Parallel similarity scoring evaluating Jaro-Winkler and Jaccard metrics to heal broken selectors.
|
|
59
|
+
- `/src/fingerprint`: Fingerprint database utilities built with `sled`.
|
|
60
|
+
- `/src/dataset`: Structured extraction engine mapping DOM elements to JSON, CSV, or Parquet files.
|
|
61
|
+
- `/sdk/python`: Maturin package for Python.
|
|
62
|
+
- `/sdk/nodejs`: NAPI-RS package for JavaScript/TypeScript.
|