Website monitoring
Website change detection vs. web scraping: What’s the difference?
A clear distinction between collecting website data and detecting meaningful changes, including when rendered browsers and crawlers are useful.
Web scraping and website change detection are related but not interchangeable. Scraping extracts information from a page at a point in time. Change detection compares observations over time and decides which differences deserve attention. The second problem requires history, normalization, and noise control.
Understand the pipeline
A useful monitoring pipeline has four stages: discover the page, render or fetch it, extract stable fields, and compare the new observation with an appropriate prior observation. A scraper can stop after extraction. A change monitor must also preserve identity, timestamps, and evidence.
Scrapy’s overview is a good reference for crawling and extraction concepts. Playwright is useful when the page’s meaningful content appears only after browser rendering. Choose the simplest tool that can observe the content reliably.
| Capability | Scraping | Change detection |
|---|---|---|
| Primary goal | Extract current data | Identify meaningful differences |
| History | Optional | Required |
| Normalization | Field-specific | Essential for low noise |
| Output | Dataset | Evidence and notification |
Compare meaning, not markup
A DOM diff can report a class name, wrapper, or layout change that has no effect on what a buyer reads. A semantic comparison focuses on headings, prices, plan limits, product claims, links, dates, and other fields connected to a research question.
Volatile text needs special treatment. Rotating hero copy, current timestamps, personalization, and consent modules can create differences without a durable market signal. Sample or normalize those regions instead of sending every change to a person.
Respect the access boundary
Public does not mean unrestricted. Follow site terms, rate limits, access controls, and applicable law. RFC 9309 defines the Robots Exclusion Protocol, while Google explains that `robots.txt` is a crawl-control mechanism and not a security boundary. Never use a crawler to bypass authentication or private controls.
The result should be a bounded, source-linked observation, not a mirror of a competitor’s entire website. Collect what the research question requires and keep the evidence proportional to that purpose.
Choose collection for the question
Web scraping is a broad extraction practice: it may collect product records, links, or documents across many pages. Change detection is a comparison problem: it needs a stable identity, a baseline, a normalized representation, and a rule for deciding whether the difference matters. A scraper can feed a monitor, but scraping more pages does not by itself produce better change evidence.
Use HTTP extraction when the response contains the authoritative content and browser rendering when JavaScript changes what a buyer sees. Playwright contexts (https://playwright.dev/docs/api/class-browsercontext) help isolate state; Scrapy (https://docs.scrapy.org/en/latest/intro/overview.html) helps schedule and follow links. Respect access boundaries and robots directives; RFC 9309 (https://www.rfc-editor.org/rfc/rfc9309) describes the Robots Exclusion Protocol, not a permission to access private material.
| Need | Best fit | Output |
|---|---|---|
| Discover linked pages | crawler | candidate URLs |
| Observe rendered CTA | browser | visible snapshot |
| Detect material edit | comparison layer | evidence event |
| Explain business meaning | human review | bounded hypothesis |
Separate extraction from comparison
Normalize requests, responses, and rendered snapshots before comparing snapshots. Resolve relative links against the final origin, remove tracking parameters only when they do not change content, normalize whitespace and Unicode punctuation, and preserve meaningful numbers, units, currency, and plan names. Keep both the raw evidence and the normalized representation: the first supports review, while the second makes repeatable matching possible.
Treat normalization as a documented loss budget rather than a cleanup step with no owner. Do not strip a region merely because it is difficult to parse; classify it as dynamic, inaccessible, or unknown and retain the limitation. Google's canonical URL guidance (https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) and URI syntax in RFC 3986 (https://www.rfc-editor.org/rfc/rfc3986) are useful references for identity, but neither proves that two pages have the same commercial meaning. See how-to-monitor-competitor-website-changes for the related operating method.
- Normalize identity before text, then normalize text before scoring.
- Compare arrays of plan, feature, link, and heading records by stable keys.
- Keep a before-and-after sample whenever a rule removes content.
| Layer | Normalize | Preserve |
|---|---|---|
| URL | scheme, host, path, safe query rules | redirect chain and source URL |
| Text | whitespace and repeated navigation | numbers and labels |
| Collections | stable identity and order | insertions and removals |
Test the limits of the method
Turn a detected difference into a repeatable workflow with four states: discovered, confirmed, interpreted, and routed. Discovery can come from a link or a page change; confirmation requires a second observation, a corroborating page, or a clearly published event; interpretation records a bounded hypothesis; routing assigns an owner, review date, and urgency. This prevents an interesting edit from becoming an unsupported strategic claim.
Run the workflow on a fixed cadence and review its failure modes. A transient 429, partial render, locale mismatch, redirect, or deleted page should produce an operational result, not a business alert. Google SRE's monitoring and alerting guidance (https://sre.google/sre-book/monitoring-distributed-systems/, https://sre.google/sre-book/practical-alerting/) supports separating collection health from human notification. Use what-counts-as-a-meaningful-competitor-website-change as the internal reference for the broader monitoring loop.
- Confirm the page identity and observation timestamp.
- Separate observed change, possible meaning, confidence, and action.
- Route only changes that map to a decision or explicit watch question.
| State | Required evidence | Output |
|---|---|---|
| Discovered | URL or diff candidate | Queue item |
| Confirmed | repeat or corroboration | Observed change |
| Interpreted | hypothesis plus caveat | Research note |
| Routed | owner and urgency | Alert, brief, or archive |

