Delivers MIL-005 (lecture Step 4): the product URL comes from `PRODUCT_URL` (default: the lecture's Amazon page), price and title selectors and robot-check markers live in `constants.py`, and a robot-check page raises `RobotCheckError` with a clear message. The code does not try to solve or bypass the check. Outcome on the live page (2026-10-28): Amazon returned HTTP 200 with a robot-check page and no price; the page is kept (tokens redacted) as a test fixture and shown in the README. Two live requests were made in total, one to inspect the response and one for the screenshot; there are no retries or loops. Review: code against QC-PY-001 as RC-014 (Go, autonomous, not independent). 56 pytest tests (no network), ruff and mypy --strict pass. Task: MIL-005#1 Task: MIL-005#2 Task: MIL-005#3 Task: MIL-005#4 Task: MIL-005#5
11 lines
553 B
HTML
11 lines
553 B
HTML
<!DOCTYPE html>
|
|
<!-- Synthetic example of live Amazon product markup: a coupon span with class a-offscreen comes before the real price, which sits in .a-price. -->
|
|
<html lang="en-us">
|
|
<head><title>Amazon.com: Instant Pot</title></head>
|
|
<body>
|
|
<span id="productTitle"> Instant Pot Duo 7-in-1 </span>
|
|
<span class="a-size-base"><span class="a-offscreen">Save $5.00 with coupon</span></span>
|
|
<span class="a-price a-text-price a-size-medium apexPriceToPay"><span class="a-offscreen">$79.95</span><span aria-hidden="true">$79.95</span></span>
|
|
</body>
|
|
</html>
|