Product Q&A Extractor
Extract product reviews, ratings, and Q&A from e-commerce pages.
#about
Uses BeautifulSoup CSS selectors with regex extract_number() for rating parsing.
For the overall rating and review count, checks element text then attributes (content, value, data-*); individual review star ratings are parsed from visible text.
Configurable selectors for overall rating, review count, individual reviews, star ratings, Q&A containers.
Request delay (0.5-5s), timeout (5-60s), custom User-Agent.
Streamlit app
- Platform
- Browser-based (no installation required)
- Input
- Product URLs via paste or CSV uploadCSS selectors for reviews (rating, count, text)CSS selectors for Q&A (container, question, answer)
- Output
- Three CSVs: product summary (URL, rating, count), individual reviews (URL, rating, text), Q&A pairs (URL, question, answer).
- Category
- E-commerce
Use cases
- Review sentiment analysis prep
- Competitive review comparison
- FAQ content extraction
- Product rating audits
#features
- BeautifulSoup CSS selector extraction
- Regex number extraction from ratings (first number in text)
- Attribute fallback (content, value, data-*) for overall rating and review count
- Configurable review and Q&A selectors
- Static HTML only (no JavaScript rendering)
- Request delay (0.5-5s), timeout (5-60s)
- Three separate CSV outputs
#how-to-use
- Enter URLs or upload CSV and select column
- Configure review selectors (defaults: .rating, [itemprop=ratingValue])
- Configure Q&A selectors
- Set request delay and timeout
- Test on single URL first
- Download three CSV exports
#faq
- Why does it extract nothing even though the page clearly shows reviews?
- Most review widgets (Yotpo, Trustpilot, Bazaarvoice and similar) inject their content with JavaScript after the page loads. This tool fetches raw HTML with the requests library and does not render JavaScript, so anything injected client side is invisible to it. If the Test Selectors button finds zero containers on a page that visibly has reviews, the content is JS-rendered and cannot be extracted with this tool.
- How are numeric ratings parsed from the page?
- A regex takes the first number found in the element text, with commas stripped, so '4.5 out of 5' correctly yields 4.5 but text where a different number comes first will mislead it. For the overall rating and review count only, if the text contains no number the tool falls back to the element's content, value and data-rating/data-count attributes. Individual review star ratings read visible text only, so widgets that encode stars in a class name or CSS width will return nothing for per-review ratings.
- Why is only one question captured when a container holds several Q&A pairs?
- Within each Q&A container the tool takes only the first element matching the question selector and the first matching the answer selector. The container selector therefore needs to match one element per Q&A pair (for example '.qa-item'), not one wrapper around the whole Q&A section.
- Why are some reviews missing their text or rating in the reviews CSV?
- Text and star rating are looked up separately inside each review container; whichever selector fails simply leaves that field blank, and a review is only skipped entirely if both fail. Blank review_text with populated ratings (or vice versa) means one of the two inner selectors does not match your site's markup.
/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.