Browsers & softwarePractical guides

Extract web data into a table: two HTML records, selectors and missing values

Before extracting web data into a table, confirm the fields exist in the source and preserve provenance and gaps. This static HTML exercise avoids a changing target website: inspect two inputs, three fields and complete reference rows, then apply the same checks to public material you may access.

macbook pro on white wooden desk
Illustrative photo: Iewek Gnos · Unsplash License

What changed: Added a complete two-record static HTML extraction exercise, field settings, missing-value and provenance checks, and troubleshooting.

The practical answer

Use .entry as the record selector and match fields inside each record. Expect two exported rows: Alpha has amount 12.00; Beta has a blank amount. Both relative links become absolute URLs. Blank means this source fragment lacks the field, not zero or proof that all dynamic page content was captured.

Start with HTML whose entire input is visible

The source is an editorial fixture, not a company’s report. Beta deliberately lacks an amount element so you can detect an invented zero. The source URL resolves relative links for the exercise; example.com is not a verified report download service.

  1. Open Structured extraction, choose Paste source and enter https://example.com/reports/ with its trailing slash. Paste the complete HTML fixture in this section.
  2. Set the Record CSS selector to .entry. Configure exactly the three fields in the table, removing unwanted sample fields and keeping names unique.
  3. Confirm your permission to process the material and start extraction. For a real task, do not paste login credentials or private admin source, or treat access restrictions as a fault to bypass.

HTML for Paste source

<!doctype html>
<html lang="en"><body>
<article class="entry">
  <h2 class="name">Alpha</h2>
  <span class="amount">12.00</span>
  <a href="2026/alpha">Report</a>
</article>
<article class="entry">
  <h2 class="name">Beta</h2>
  <a href="2026/beta">Report</a>
</article>
</body></html>
Fictional public-data exercise. Pasted HTML is sent to KitNelo’s parsing service; page scripts are not executed.

Configure the fields, compare both rows and locate failures

  1. Check that there are two records, then inspect every field. The amount 12.00 is extracted text, not a completed currency or type conversion.
  2. Export JSON to retain parsing mode, source URL and collection context. For CSV/Excel, attach a provenance ledger with pasted-source mode, URL, processing time and Beta’s missing field. Do not assume every format preserves the outer metadata.
  3. Reopen the export and compare both full URLs, Alpha’s amount and Beta’s blank. Record “Beta: no amount in this source; unresolved” and separate unresolved rows before calculations.
Record selector .entry; field selectors operate within each record
Field nameField selectorAttribute
name.nametext
amount.amounttext
urlahref
Complete expected business fields
nameamounturl
Alpha12.00https://example.com/reports/2026/alpha
BetaEmpty string; missing fieldhttps://example.com/reports/2026/beta

For zero rows, check .entry. For two rows with empty fields, check field selectors. For one merged row, check whether body was used as the record. If a visible value is absent from source, static extraction cannot recreate script-loaded content; obtain an authorized original file or saved source and review it again.

A three-page ledger says more than a success message

An illustrative research task needs three public explanation pages on one site. Page A supplies the title and required body. Page B is accessible, but its static source lacks the required text. Page C returns an access restriction. Report extracted content, a source-extraction gap and an unavailable result separately. Calling the last two zero records hides different causes and different next steps.

Keep original URL, final URL, collection time, required fields and outcome together. If a redirect lands on the homepage, do not attach that body to the original article title. A successfully extracted title does not establish complete body coverage. Compare the beginning, a middle section and the ending before deciding which questions the extracted material can answer.

Illustrative three-page collection ledger
PageObserved resultState to recordNext step
Explanation ATitle and required complete bodyExtracted and reviewedKeep source and observation time
Explanation BTitle without required bodyStatic-source extraction gapCompare visible page and permitted export
Explanation CAccess restriction responseNot obtainedStop that path; do not invent a zero

Distinguish absent source text, unmatched selectors and absent content

The content collector and related parsers read public static HTML/XML without executing page JavaScript. If visible browser text is missing from the output, check whether the obtained source contains it. Text present in source but absent from custom fields calls for reviewing the record selector and field selectors within each record. Text absent from source may require a permitted existing export; changing selectors cannot create it.

Test both a normal page and a missing-field page. The first checks field location; the second checks how absence is retained instead of copying a prior row’s value. Pasted source is also sent to the parsing service, rather than processed offline. Do not bypass login or access restrictions to complete a table. Deliver the supported portion with explicit gaps and reasons.

Decide whether parameters and fragments identify the content

The illustrative URLs /report?year=2025&utm_source=mail and /report?year=2026&utm_source=mail may identify different reports. Removing every query parameter would merge them incorrectly. The URL-list tool can remove known tracking parameters while retaining other parameters and their order. It cleans text without visiting pages, so a retained URL is not a verified working page. On hash-routed sites, removing #/ fragments can also merge different application views.

Deliver the cleaned list, exclusions and extracted records together. JSON downloads retain outer collection context such as source mode, sourceUrl and collectedAt. A CSV-only delivery needs a separate source ledger so flattening does not lose that context. Retain raw pages separately through permitted methods when needed; structured result JSON does not automatically archive every page’s complete original HTML.

Optional tools for a different input or next step

  • Prepare the URL set: Clean and filter the seed list while preserving meaningful query parameters and recording exclusions.
  • Inspect robots rules: Check the relevant path and user agent; robots guidance is not a grant of access or reuse rights.
  • Read Sitemap or RSS sources: Use discovered URLs as candidates, then check whether they are current, in scope and accessible.
  • Extract page content and metadata: Compare title, main body and metadata with the source; navigation removal may also omit useful sections.
  • Extract page links: Check resolved relative URLs and distinguish navigation links from the evidence needed for your task.
  • Inspect image resources: Keep the source page and resource URL, inspect lazy-loaded candidates, and verify permission before reusing a photograph.
  • Extract a public table: Compare merged headers, units, footnotes and row counts against the visible table before exporting.
  • Extract custom fields: Test selectors or field rules on a normal page and a page with missing fields, then inspect the extracted values.
  • Keep a research pack: Label collected records with sources and questions; compare monitoring changes with the actual page before describing what changed.
  • Audit a site handoff: Keep the crawl within the intended domain and inspect reported broken links or image failures before exporting the report.
  • Generate SEO text files: Create a Sitemap and robots.txt from reviewed canonical URLs and path rules, then inspect the output; generation does not publish files or guarantee indexing.

Turn “captured” into four checkable claims

RFC 9309 defines the Robots Exclusion Protocol; respect access rules while separately checking the task’s allowed sources and reuse rights.

For email evidence, retain the source page in the export. Compare simplified reading views with the original page.

Acceptance conditions for the two records

  • Scope says the supplied HTML fragment was parsed, without claiming whole-site coverage.
  • Both records map to the source; URL resolution uses the correct trailing-slash base.
  • Beta’s missing value is distinct from zero, denied access and parsing failure.
  • JSON or a companion ledger preserves time and source; retain an allowed source copy because exported JSON is not a complete HTML archive.

Common questions

Does robots.txt grant permission to reuse content?

No. Access instructions and content rights are separate questions.

Does a Sitemap prove every page was collected?

No. It provides discovery candidates; compare the expected set with actual successful results.

Do generated SEO files guarantee indexing?

No. Deploying correct files and search-engine decisions remain separate from generating them.

Further reading & sources

Put the guide into practice

Open the relevant tool, preview the result and check your exported file.

Related articles