{"adoption": {"forks": 2516, "observed_at": "2026-08-28T04:08:57.545092+00:00", "stars": 4723}, "canonical_url": "https://ross.abutalabs.com/products/python-scraping", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Code samples from the book Web Scraping with Python http://shop.oreilly.com/product/0636920034391.do", "domain": ["crawlers", "web-development", "tutorials", "developer-tools"], "enriched": true, "function": ["web-scraping", "parser", "developer-tools"], "health_score": 20, "homepage": null, "language": "Jupyter Notebook", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["REMitchell/python-scraping"], "name": "REMitchell/python-scraping", "platform": ["python", "cross-platform"], "pushed_at": "2024-06-01T23:16:50+00:00", "repo": "REMitchell/python-scraping", "stars": 4723, "tags": ["book-samples", "jupyter-notebooks", "scraping", "beautifulsoup", "scrapy", "oreilly"], "topics": [], "urls": [], "use_cases": ["learn web scraping with python", "examples of scraping websites with beautifulsoup", "jupyter notebook tutorials for scraping", "understand how to parse html in python", "study techniques for crawling and scraping javascript-heavy sites", "reference code for a web scraping book"], "what_it_is": "Companion code samples for the O'Reilly book 'Web Scraping with Python' (2nd Edition), mostly provided as Jupyter notebooks. It covers scraping techniques, libraries, and examples from the book rather than being a reusable library.", "when_to_avoid": ["you need a production scraping framework or maintained library", "you want a tool with a license, releases, or active feature development", "you need up-to-date code guaranteed to work against today's websites"], "when_to_choose": ["you are reading the book and want its runnable code samples", "you want notebook-style, tutorial-driven examples of scraping in Python", "you are learning scraping concepts from scratch"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/python-scraping", "repo": "REMitchell/python-scraping", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.545092+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:05.141920+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d61c78ed1d62eac20a4256789928a4b483e4de20c57ade42179bdf7f1ebfa63", "fetched_at": "2026-08-28T04:08:57.545092+00:00", "kind": "readme", "missing": false, "url": "https://github.com/REMitchell/python-scraping"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4098, "days_push": 823, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}