Product Spec Extractor
Scrape product specifications from e-commerce pages into structured CSV.
#about
Uses BeautifulSoup with configurable CSS selectors to locate specification containers and extract key-value pairs.
Columns auto-sorted by frequency (specifications in more products rank higher).
Configurable request delays (0.5-10s), timeouts (5-60s), and custom User-Agent headers.
Streamlit app
- Platform
- Browser-based (no installation required)
- Input
- Product URLs via text paste or CSV uploadCSS selectors for key and value elementsOptional: parent container selector
- Output
- CSV with extracted product specifications
- Category
- E-commerce
Use cases
- Product data extraction
- Competitive spec comparison
- Product feed enrichment
- Structured data audits
#features
- BeautifulSoup CSS selector extraction
- Key/value CSS selector configuration
- Optional parent container scoping
- Request delay slider (0.5-10 seconds)
- Timeout configuration (5-60 seconds)
- Columns sorted by specification frequency
#how-to-use
- Enter URLs or upload CSV and select column
- Define CSS selectors for spec keys and values
- Test selectors on a single page first
- Configure request delay and timeout
- Run extraction across all URLs
- Download structured CSV with specs as columns
#faq
- Why are spec values paired with the wrong names?
- Keys and values are matched by position: the first element matching the key selector is paired with the first element matching the value selector, and so on. If the two selectors return different numbers of elements, everything after the mismatch shifts and trailing keys get empty values. Setting the optional parent container selector so both selectors only match inside the spec block is the usual fix.
- Why does extraction return nothing on a site where I can see a spec table?
- The tool fetches raw HTML with the requests library and parses it with BeautifulSoup; it does not execute JavaScript. If the specification table is rendered client side it will not be in the fetched HTML. Use the Test Selectors button on one URL first: if it reports zero keys, the page structure hints show how many dl and table elements actually exist in the raw HTML.
- The parent container selector I set is wrong. Does the tool warn me?
- Only in test mode. When testing a single URL it warns that the container was not found and falls back to searching the whole page. During the full extraction run the fallback is silent, so a bad container selector can quietly pull key-value pairs from anywhere on the page. Always test before running the full list.
- How is the output CSV structured?
- One row per URL and one column per unique specification name found across all pages, with columns ordered by how many products contain that spec (most common first). URLs that failed get a row with an Error column instead, so failures are visible in the same file. The CSV is written as UTF-8 with BOM so it opens cleanly in Excel.
- What selectors work for table-based spec layouts instead of definition lists?
- The defaults (dt and dd) suit definition lists. For tables, use 'th' or 'td:first-child' as the key selector and 'td:last-child' as the value selector, ideally scoped with a parent container selector such as 'table.specifications'.
/contact
Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.