# View a page

Source: https://getanalog.io/docs/extract/

Save a page, search its content directly, or request an overview when needed.

Use Analog to view a webpage as ordered records, prose, and navigation.
Acquire the page, then search or inspect its saved content as your task
requires. An overview is available when you need to get your bearings.

If you are setting up for the first time, start with the
[Quickstart](https://getanalog.io/docs/quickstart/), which teaches the browser capture handoff.
The detailed acquisition examples below use a quotes page.

<details class="reference-index">
<summary>On this page</summary>

- [Supply the page you already have](https://getanalog.io/docs/extract/#supply-the-page-you-already-have)
- [View from the terminal](https://getanalog.io/docs/extract/#view-from-the-terminal)
- [Get your bearings when needed](https://getanalog.io/docs/extract/#get-your-bearings-when-needed)
- [In Python](https://getanalog.io/docs/extract/#in-python)
- [What Analog discloses](https://getanalog.io/docs/extract/#what-analog-discloses)
- [Markdown only, no account](https://getanalog.io/docs/extract/#markdown-only-no-account)

</details>



## Supply the page you already have

Use your agent's browser for navigation and interaction, then
[capture the chosen page](https://getanalog.io/docs/fetching/#capture-from-your-browsers-current-page).
`view` reads the capture file, validates it, and extracts from that state.
It never fetches the URL or changes the browser. After the first command,
you can search the saved name locally without another extraction.

Ordinary HTML is also accepted with the browser's actual `--url`. It does
not include the helper's visibility observations. Structured viewing sends
the supplied content and URL to Analog; `--mode local` keeps conversion local.



### Search a browser capture

Use your actual capture path and an unused name:

```bash example=illustrative fragment=true
analog view ./about.capture.json --save-as about --find "Frankie"
analog view about --find "Marcus" --find "Frankie"
```

### Supply ordinary HTML instead

```bash wrap=true example=illustrative fragment=true
analog view ./about.html --url https://getanalog.io/about/ --save-as about --find "Frankie"
```





## View from the terminal

If your agent's browser can supply a capture, use the
[supplied-page path](https://getanalog.io/docs/extract/#supply-the-page-you-already-have). When you need Analog
to acquire a URL, `browse` handles that step with its built-in browser.
Fetch the quotes page to see its quotes as records with text, author,
and tags. The command prints a receipt with a **handle**, which identifies
this saved result, plus any material capture notes.

Use `latest` to return to the newest save, or use its handle to keep
referring to the same result after another fetch. The next commands read
the saved page without fetching it again.



### Fetch the example page

```bash wrap=true example=runnable scenario=cli-extract-quotes
analog browse https://quotes.toscrape.com/js/
```

Your handle may differ.

```text wrap=true example=output scenario=cli-extract-quotes
Saved 20260913-zl65e4
Captured page 1; a next-page link is available.
A single-subject interpretation was withheld; some page facts could not be verified.
```

### Search a known value

You can search the saved page immediately. This example looks for Einstein
without first reading a preview or choosing field names:

```bash wrap=true example=runnable scenario=cli-find-einstein-quotes
analog view 20260913-zl65e4 --find Einstein
```

```text wrap=true example=output scenario=cli-find-einstein-quotes
Source: https://quotes.toscrape.com/js/
section[0]  3 matches
  tags=[4 values], text="“The world as we have created it is a process of our thinking. It cannot be chan…(+35 chars)", text_2="by Albert Einstein"
  tags=[5 values], text="“There are only two ways to live your life. One is as though nothing is a miracl…(+51 chars)", text_2="by Albert Einstein"
  tags=[3 values], text="“Try not to become a man of success. Rather become a man of value.”", text_2="by Albert Einstein"
Captured page 1; a next-page link is available.
A single-subject interpretation was withheld; some page facts could not be verified.
```

The matches retain the author and quote together, with the source and
capture scope. Text display shortens long values; add `--json` for complete
matching records. Substitute your own saved handle.





## Get your bearings when needed

Request a preview when a page overview would help you interpret the content
or find navigation. It shows the page in reading order. In this example,
`section[0]` contains ten quotes; the other two sections contain
navigation links. Section numbers include navigation, so they have no gaps.

The `fields:` line shows field names and types. `[]` marks a list-valued
field; a ratio such as `2/6` means two of six records have a non-null value.
Use `analog describe <handle>` for sample values and field statistics,
or export the records you need. The preview contains no sample values.

The pagination note says this save covers only the first page. The
withholding note describes content Analog could not confidently return
as a record. Read those notes alongside the records to understand the
save's coverage; [Fetching](https://getanalog.io/docs/fetching/) explains how to request more
pages or expand additional content.

Use `analog --guidance view <handle>` to request one optional next action.
Coverage notes remain visible with guidance off; `--complete` independently
includes hidden fields in the field summary.



### Reopen the saved page

```bash wrap=true example=runnable scenario=cli-open-latest-quotes
analog view latest
```

Your saved handle and page content may differ.

<details>
<summary>View output</summary>

```text wrap=true hangingIndent=2 example=output scenario=cli-open-latest-quotes
pagination: this looks like page 1 of a paginated collection (its links reach page 2) — these records cover this page only.

3 sections extracted.

section[0]  10 records · 3 fields
  fields: tags:text[], text:text, text_2:text

section[1]  navigation  2 links (header) · 4 fields
  fields: text:text, url:url, group:text, depth:text

section[2]  navigation  2 links (footer) · 4 fields
  fields: text:text, url:url, group:text, depth:text

(A single-subject record was also weighed and withheld — Analog couldn't verify enough of the page's facts for a record we'd trust.)
```

</details>

### Read one complete quote

```bash wrap=true example=runnable scenario=cli-first-quote
analog export latest --section 0 \
  --fields text_2,text --limit 1
```

```json wrap=true example=output scenario=cli-first-quote
[
  {
    "text_2": "by Albert Einstein",
    "text": "“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”"
  }
]
```

The export contains the complete quote text.
Use your result's section numbers and field names if the page has changed.



### Choose what to read next

Each record section has `records`, `fields`, and its own `markdown`.
Inspect a section when the page contains different kinds of records,
such as products and reviews. Read the whole page as Markdown when the
surrounding prose matters.

For field statistics, searching, export formats, and comparisons, continue
to [Working with results](https://getanalog.io/docs/results/). If the result reports a
**page outline**, it identifies regions that remained page context or
were not returned as records.





## In Python

[Install Analog in your Python environment](https://getanalog.io/docs/install/#install-in-a-python-project)
and [connect an account](https://getanalog.io/docs/authenticate/) before running this example.

`analog()` returns a result and saves it locally. Its
`structured_content` contains the record sections in page order,
including navigation. Enumerate them to choose which records to read.
For the complete reading order, including prose, use `result.sections`.

Fetch progress is reported separately in the terminal.



### List the record sections

```python wrap=true hangingIndent=2 example=runnable scenario=python-extract-sections
from analog import analog

result = analog("https://quotes.toscrape.com/js/")
for index, section in enumerate(result.structured_content):
    print(f"section[{index}]: {len(section.records)} records")
```

```text wrap=true example=output scenario=python-extract-sections
section[0]: 10 records
section[1]: 2 records
section[2]: 2 records
```

### Read the first quote

Continue with `result` from the previous example:

```python wrap=true hangingIndent=2 example=runnable scenario=python-first-quote
print(result.structured_content[0].records[0]["text"])
```

```text wrap=true example=output scenario=python-first-quote
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
```

The record keeps the page's full text. See
[Choosing the right Python view](https://getanalog.io/docs/results/#choose-the-right-python-view)
for reading sections, collections, and saved results.



## What Analog discloses

Analog never silently edits your data. When something is withheld,
uncertain, or partial, the result says so:

- **Field names are marked as guesses when they are guesses.** A
  semantically rich page names cleanly; a thin page falls back to
  positional names like `text_2` — meaning the page gave the field no
  usable label, not that extraction failed. Rename in one batch with
  `analog rename-fields <handle> text_2=title` — and the rename is
  remembered for the URL, so future fetches of the same page arrive
  with your names already applied (conservatively: when the page's
  fields have visibly changed shape, Analog skips the rename rather
  than guessing, and you rename once more). If the page merely
  reshuffles its own placeholder names while the column's values stay
  put, your name follows the column. `--once` renames a single saved
  result without being remembered.
- **Withheld content is counted.** Rows or columns that carried
  nothing readable are withheld with a disclosed count, never
  silently.
- **Structural odd-ones-out are flagged.** A header row zipped in
  with data rows is pointed out by index, with a ready-made way to
  drop it. Dropping it changes the view, not the saved source result.
- **Pagination coverage is stated.** If the page's own markup shows
  it's page 1 of 5, the result says these records cover this page
  only.
- **Saved values retain their full text.** Inspection samples may shorten a
  value with `…(+N chars)`; read its record or export to see it in full.
  An ellipsis in the stored value is the page's own visible truncation.

Sponsored placements are data too: pages ship with ads, so ads come
through as records — with the platform's own label ("Sponsored")
preserved as a field value, so filtering them is a one-line choice:

```bash example=illustrative
analog export <handle> -f csv --where "badge!=Sponsored"
```

If the records don't match the page, see [Troubleshooting](https://getanalog.io/docs/troubleshooting/)
to check what was captured and what was extracted.



## Markdown only, no account

Use local mode when the page's prose gives you what you need. Analog
fetches the page and converts it to Markdown on your machine, without
structured extraction, a backend call, or sign-in.

This creates a new local save. Reopen it with `--markdown` to read the
page text; `latest` now refers to this local result.



### Save a local Markdown result

```bash wrap=true example=runnable scenario=cli-local-quotes
analog browse https://quotes.toscrape.com/js/ --mode local
```

### Read the page text

```bash wrap=true example=runnable scenario=cli-open-local-quotes
analog view latest --markdown
```

The response is the page's Markdown, including its navigation links.

<details>
<summary>View output</summary>

```text wrap=true example=output scenario=cli-open-local-quotes
Quotes to Scrape



# [Quotes to Scrape](https://quotes.toscrape.com/)

[Login](https://quotes.toscrape.com/login)



“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”by Albert Einstein

Tags: change deep-thoughts thinking world

“It is our choices, Harry, that show what we truly are, far more than our abilities.”by J.K. Rowling

Tags: abilities choices

“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”by Albert Einstein

Tags: inspirational life live miracle miracles

“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”by Jane Austen

Tags: aliteracy books classic humor

“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”by Marilyn Monroe

Tags: be-yourself inspirational

“Try not to become a man of success. Rather become a man of value.”by Albert Einstein

Tags: adulthood success value

“It is better to be hated for what you are than to be loved for what you are not.”by André Gide

Tags: life love

“I have not failed. I've just found 10,000 ways that won't work.”by Thomas A. Edison

Tags: edison failure inspirational paraphrased

“A woman is like a tea bag; you never know how strong it is until it's in hot water.”by Eleanor Roosevelt

Tags: misattributed-eleanor-roosevelt

“A day without sunshine is like, you know, night.”by Steve Martin

Tags: humor obvious simile

- [Next →](https://quotes.toscrape.com/js/page/2/)

Quotes by: [GoodReads.com](https://www.goodreads.com/quotes)

Made with ❤ by [Zyte](https://www.zyte.com)
```

</details>

