# Usage
## Static HTML
Use `cold_soup` for pages that do not require JavaScript rendering.
```python
from souppot import cold_soup
soup = cold_soup("https://example.com")
if soup:
print(soup.title.string)
```
`cold_soup` returns a `BeautifulSoup` object for HTML responses, a raw `requests.Response` for other successful response types, and `None` for missing URLs or non-200 responses.
## JavaScript-Rendered HTML
Use `hot_soup` when a page needs Playwright Chromium to render JavaScript before parsing.
```python
from souppot import hot_soup
soup = hot_soup("https://example.com", wait_selector=".loaded")
if soup:
print(soup.select_one(".loaded").get_text(strip=True))
```
If `wait_selector` times out, `hot_soup` logs the timeout and parses whatever DOM is available.
## Downloads
Use `hot_pot` when a file should be downloaded through Playwright's request context.
```python
from souppot import hot_pot
path = hot_pot(
"https://example.com/file.zip",
"downloads/file.zip",
referer="https://example.com",
)
print(path)
```
Parent directories for the destination path are created automatically.