Est. MMXXV · lrscraper The Law Review Reporter Live

A continuous record of the open collection of American legal scholarship

Vol. II Tuesday, September 22, 2026 № 265

Scraper implementation

UCDavisLawReviewScraper

UC Davis Law Review · mapped to registry #26

Implementation identity
scrapers/uc_davis_law_review_scraper.py
LightBaseScraperPlatform unknownCLI entrypoint
no_items
Latest status
no items
Run #46077
Latest runtime
0.4s
2026-09-20T20:35:54+00:00
Latest PDFs
0
0 duplicates skipped
Uploads pending
0
Queue clear or unavailable
Run history
17
Returned by current limit

Definition

Registry metadata for this implementation

scraper id
UCDavisLawReviewScraper
canonical name
UC Davis Law Review
institution code
-
platform
-
base class
LightBaseScraper
class name
UCDavisLawReviewScraper
module path
scrapers.uc_davis_law_review_scraper
file path
scrapers/uc_davis_law_review_scraper.py
has cli entrypoint
true
is abstract
false
updated at
2026-09-22 17:32:34

Operational mapping

Law review ownership and publication state

Registry health
CLOUDFLARE
Last uploaded
2026-07-01 19:24:09
Registry sync
uabox:Law_Review_Project/uc_davis_law_review_20260701_192335.zip
Latest error
CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives

Run history

Runs associated with law review #26; diagnostics expand in place.

17 returned · show 200
Run Status Started Runtime Result Error / diagnostics Logs
#46077 no items 2026-09-20T20:35:54+00:00ended 2026-09-20T20:35:55+00:00 0.4s 0 PDF 0 skipped 0 errors no_items_reason: CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives
Run metadata
{"automation_cycle_id": 264899, "canonical_name": "UC Davis Law Review", "child_pid": 174685, "discovery_problem": "CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives", "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-20T20:35:54+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-20T20:35:54+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789936554_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789936554_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#45749 no items 2026-09-13T15:23:36+00:00ended 2026-09-13T15:23:42+00:00 6.3s 0 PDF 0 skipped 0 errors no_items_reason: CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives
Run metadata
{"automation_cycle_id": 251022, "canonical_name": "UC Davis Law Review", "child_pid": 1443924, "discovery_problem": "CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives", "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-13T15:23:36+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-13T15:23:36+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789313016_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789313016_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#45303 no items 2026-09-13T03:13:30+00:00ended 2026-09-13T03:13:43+00:00 13.3s 0 PDF 0 skipped 0 errors no_items_reason: CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives
Run metadata
{"automation_cycle_id": 250007, "canonical_name": "UC Davis Law Review", "child_pid": 294296, "discovery_problem": "CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives", "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-13T03:13:30+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-13T03:13:30+00:00", "run_kind": "manual", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789269210_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789269210_UCDavisLawReviewScraper.out.log", "timeout_minutes": 30}
#45264 no items 2026-09-13T02:27:58+00:00ended 2026-09-13T02:28:02+00:00 4.0s 0 PDF 0 skipped 0 errors no_items_reason: BROKEN_LOGIC: discover_urls returned 0 items (base_url=https://lawreview.law.ucdavis.edu/); scraper did not set `_no_items_reason`
Run metadata
{"automation_cycle_id": 249947, "canonical_name": "UC Davis Law Review", "child_pid": 225456, "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-13T02:27:58+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-13T02:27:58+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789266478_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789266478_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#44455 no new content 2026-08-13T23:01:17+00:00ended 2026-08-13T23:03:09+00:00 111.7s 0 PDF 137 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 153675, "canonical_name": "UC Davis Law Review", "child_pid": 2485683, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-08-13T23:02:47+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-08-13T23:01:17+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1786662077_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1786662077_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#43650 no new content 2026-07-14T18:24:11+00:00ended 2026-07-14T18:26:09+00:00 117.6s 0 PDF 137 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 43988, "canonical_name": "UC Davis Law Review", "child_pid": 2944715, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-07-14T18:25:41+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-07-14T18:24:11+00:00", "run_kind": "scheduled", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1784053451_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1784053451_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#30910 success 2026-07-01T16:29:34+00:00ended 2026-07-01T16:54:44+00:00 1509.5s 17 PDF 120 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 28045, "canonical_name": "UC Davis Law Review", "child_pid": 3031599, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-07-01T16:54:16+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-07-01T16:29:34+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1782923374_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1782923374_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#4299 no new content 2026-06-01T15:17:04+00:00ended 2026-06-01T15:18:51+00:00 106.6s 0 PDF 120 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 1512, "canonical_name": "UC Davis Law Review", "child_pid": 5421, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-06-01T15:18:34+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-06-01T15:17:04+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1780327024_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1780327024_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#3620 success 2026-05-01T18:34:53+00:00ended 2026-05-01T18:36:59+00:00 126.0s 10 PDF 110 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 600, "canonical_name": "UC Davis Law Review", "child_pid": 921672, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-05-01T18:36:53+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-05-01T18:34:53+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1777660493_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1777660493_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#2759 success 2026-03-08T12:06:18+00:00ended 2026-03-08T12:08:11+00:00 113.1s 9 PDF 101 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2681507, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-03-08T12:07:48+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-03-08T12:06:18+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1772971578_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1772971578_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#755 success 2026-02-06T10:59:23+00:00ended 2026-02-06T11:00:04+00:00 41.0s 13 PDF 17 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 3234257, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T10:59:53+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T10:59:23+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770375563_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770375563_UCDavisLawReviewScraper.out.log", "timeout_minutes": 18}
#754 failed 2026-02-06T10:58:40+00:00ended 2026-02-06T10:58:40+00:00 0.2s 0 PDF 0 skipped 0 errors AttributeError: 'str' object has no attribute 'get'
Traceback
Traceback (most recent call last):
  File "/home/arbel/sites/lrscraper/light_base_scraper.py", line 661, in run
    items = await self.discover_urls()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 50, in discover_urls
    html = await self._fetch_html(self.archives_url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 158, in _fetch_html
    return await asyncio.to_thread(_task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/miniconda3/lib/python3.11/asyncio/threads.py", line 25, in to_thread
    return await loop.run_in_executor(None, func_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/miniconda3/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 134, in _task
    server = str(getattr(resp, "headers", {}) or {}).get("server", "") or ""
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 3232944, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T10:58:40+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T10:58:40+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770375520_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770375520_UCDavisLawReviewScraper.out.log", "timeout_minutes": 18}
#633 failed 2026-02-06T05:21:28+00:00ended 2026-02-06T05:21:28+00:00 0.2s 0 PDF 0 skipped 0 errors RuntimeError: Blocked by Cloudflare bot protection (HTTP 403) at https://lawreview.law.ucdavis.edu/archives
Traceback
Traceback (most recent call last):
  File "/home/arbel/sites/lrscraper/light_base_scraper.py", line 514, in run
    items = await self.discover_urls()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 44, in discover_urls
    html = await self._fetch_html(self.archives_url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 169, in _fetch_html
    raise RuntimeError(
RuntimeError: Blocked by Cloudflare bot protection (HTTP 403) at https://lawreview.law.ucdavis.edu/archives
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2546542, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T05:21:28+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T05:21:28+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770355288_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770355288_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#632 no items 2026-02-06T05:21:00+00:00ended 2026-02-06T05:21:00+00:00 0.2s 0 PDF 0 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2545673, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T05:21:00+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T05:21:00+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770355260_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770355260_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#631 no items 2026-02-06T05:19:35+00:00ended 2026-02-06T05:19:36+00:00 0.3s 0 PDF 0 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2543054, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T05:19:35+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T05:19:35+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770355175_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770355175_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#349 no items 2026-01-22T03:59:42+00:00ended 2026-01-22T03:59:42+00:00 0.1s 0 PDF 0 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "file_path": "scrapers/uc_davis_law_review_scraper.py", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-01-22T03:59:42+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1769054382_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1769054382_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#20 no new content 2025-12-22T21:30:54.265981ended 2025-12-22T21:30:54.525383 0.3s 0 PDF 0 skipped 0 errors error: No new content found (all duplicates)

Exact scraper-ID runs

Legacy records explicitly stored under this implementation identifier.

Run Status Started Runtime Result Error / diagnostics Logs
#46077 no items 2026-09-20T20:35:54+00:00ended 2026-09-20T20:35:55+00:00 0.4s 0 PDF 0 skipped 0 errors no_items_reason: CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives
Run metadata
{"automation_cycle_id": 264899, "canonical_name": "UC Davis Law Review", "child_pid": 174685, "discovery_problem": "CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives", "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-20T20:35:54+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-20T20:35:54+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789936554_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789936554_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#45749 no items 2026-09-13T15:23:36+00:00ended 2026-09-13T15:23:42+00:00 6.3s 0 PDF 0 skipped 0 errors no_items_reason: CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives
Run metadata
{"automation_cycle_id": 251022, "canonical_name": "UC Davis Law Review", "child_pid": 1443924, "discovery_problem": "CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives", "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-13T15:23:36+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-13T15:23:36+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789313016_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789313016_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#45303 no items 2026-09-13T03:13:30+00:00ended 2026-09-13T03:13:43+00:00 13.3s 0 PDF 0 skipped 0 errors no_items_reason: CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives
Run metadata
{"automation_cycle_id": 250007, "canonical_name": "UC Davis Law Review", "child_pid": 294296, "discovery_problem": "CLOUDFLARE: UC Davis Law Review page returned HTTP 403: https://lawreview.law.ucdavis.edu/archives", "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-13T03:13:30+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-13T03:13:30+00:00", "run_kind": "manual", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789269210_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789269210_UCDavisLawReviewScraper.out.log", "timeout_minutes": 30}
#45264 no items 2026-09-13T02:27:58+00:00ended 2026-09-13T02:28:02+00:00 4.0s 0 PDF 0 skipped 0 errors no_items_reason: BROKEN_LOGIC: discover_urls returned 0 items (base_url=https://lawreview.law.ucdavis.edu/); scraper did not set `_no_items_reason`
Run metadata
{"automation_cycle_id": 249947, "canonical_name": "UC Davis Law Review", "child_pid": 225456, "download_queue": {"due": 0, "pending": 0, "retries": 0, "scope": "UCDavisLawReviewScraper:UC Davis Law Review", "waiting": 0}, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-09-13T02:27:58+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-09-13T02:27:58+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1789266478_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1789266478_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#44455 no new content 2026-08-13T23:01:17+00:00ended 2026-08-13T23:03:09+00:00 111.7s 0 PDF 137 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 153675, "canonical_name": "UC Davis Law Review", "child_pid": 2485683, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-08-13T23:02:47+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-08-13T23:01:17+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1786662077_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1786662077_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#43650 no new content 2026-07-14T18:24:11+00:00ended 2026-07-14T18:26:09+00:00 117.6s 0 PDF 137 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 43988, "canonical_name": "UC Davis Law Review", "child_pid": 2944715, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-07-14T18:25:41+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-07-14T18:24:11+00:00", "run_kind": "scheduled", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1784053451_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1784053451_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#30910 success 2026-07-01T16:29:34+00:00ended 2026-07-01T16:54:44+00:00 1509.5s 17 PDF 120 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 28045, "canonical_name": "UC Davis Law Review", "child_pid": 3031599, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-07-01T16:54:16+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-07-01T16:29:34+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1782923374_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1782923374_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#4299 no new content 2026-06-01T15:17:04+00:00ended 2026-06-01T15:18:51+00:00 106.6s 0 PDF 120 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 1512, "canonical_name": "UC Davis Law Review", "child_pid": 5421, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-06-01T15:18:34+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-06-01T15:17:04+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1780327024_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1780327024_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#3620 success 2026-05-01T18:34:53+00:00ended 2026-05-01T18:36:59+00:00 126.0s 10 PDF 110 skipped 0 errors No reported error
Run metadata
{"automation_cycle_id": 600, "canonical_name": "UC Davis Law Review", "child_pid": 921672, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-05-01T18:36:53+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-05-01T18:34:53+00:00", "run_kind": "scheduled_active", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1777660493_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1777660493_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#2759 success 2026-03-08T12:06:18+00:00ended 2026-03-08T12:08:11+00:00 113.1s 9 PDF 101 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2681507, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-03-08T12:07:48+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-03-08T12:06:18+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1772971578_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1772971578_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}
#755 success 2026-02-06T10:59:23+00:00ended 2026-02-06T11:00:04+00:00 41.0s 13 PDF 17 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 3234257, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T10:59:53+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T10:59:23+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770375563_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770375563_UCDavisLawReviewScraper.out.log", "timeout_minutes": 18}
#754 failed 2026-02-06T10:58:40+00:00ended 2026-02-06T10:58:40+00:00 0.2s 0 PDF 0 skipped 0 errors AttributeError: 'str' object has no attribute 'get'
Traceback
Traceback (most recent call last):
  File "/home/arbel/sites/lrscraper/light_base_scraper.py", line 661, in run
    items = await self.discover_urls()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 50, in discover_urls
    html = await self._fetch_html(self.archives_url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 158, in _fetch_html
    return await asyncio.to_thread(_task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/miniconda3/lib/python3.11/asyncio/threads.py", line 25, in to_thread
    return await loop.run_in_executor(None, func_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/miniconda3/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 134, in _task
    server = str(getattr(resp, "headers", {}) or {}).get("server", "") or ""
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 3232944, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T10:58:40+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T10:58:40+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770375520_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770375520_UCDavisLawReviewScraper.out.log", "timeout_minutes": 18}
#633 failed 2026-02-06T05:21:28+00:00ended 2026-02-06T05:21:28+00:00 0.2s 0 PDF 0 skipped 0 errors RuntimeError: Blocked by Cloudflare bot protection (HTTP 403) at https://lawreview.law.ucdavis.edu/archives
Traceback
Traceback (most recent call last):
  File "/home/arbel/sites/lrscraper/light_base_scraper.py", line 514, in run
    items = await self.discover_urls()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 44, in discover_urls
    html = await self._fetch_html(self.archives_url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/arbel/sites/lrscraper/scrapers/uc_davis_law_review_scraper.py", line 169, in _fetch_html
    raise RuntimeError(
RuntimeError: Blocked by Cloudflare bot protection (HTTP 403) at https://lawreview.law.ucdavis.edu/archives
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2546542, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T05:21:28+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T05:21:28+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770355288_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770355288_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#632 no items 2026-02-06T05:21:00+00:00ended 2026-02-06T05:21:00+00:00 0.2s 0 PDF 0 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2545673, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T05:21:00+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T05:21:00+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770355260_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770355260_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#631 no items 2026-02-06T05:19:35+00:00ended 2026-02-06T05:19:36+00:00 0.3s 0 PDF 0 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "child_pid": 2543054, "file_path": "scrapers/uc_davis_law_review_scraper.py", "heartbeat_at": "2026-02-06T05:19:35+00:00", "heartbeat_source": "orchestrator", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-02-06T05:19:35+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1770355175_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1770355175_UCDavisLawReviewScraper.out.log", "timeout_minutes": 15}
#349 no items 2026-01-22T03:59:42+00:00ended 2026-01-22T03:59:42+00:00 0.1s 0 PDF 0 skipped 0 errors No reported error
Run metadata
{"canonical_name": "UC Davis Law Review", "file_path": "scrapers/uc_davis_law_review_scraper.py", "law_review_id": 26, "orchestrator": "lrscraper", "orchestrator_started_at": "2026-01-22T03:59:42+00:00", "scraper_id": "UCDavisLawReviewScraper", "script_path": "scrapers/uc_davis_law_review_scraper.py", "stderr_path": "logs/orchestrator_runs/1769054382_UCDavisLawReviewScraper.err.log", "stdout_path": "logs/orchestrator_runs/1769054382_UCDavisLawReviewScraper.out.log", "timeout_minutes": 45}