Skip to content
Start free

Author Profile

Mihai Maxim

Full Stack Developer15 articles

Mihai Maxim is a Full Stack Developer at WebScrapingAPI, contributing across the product and helping build reliable tools and features for the platform.

Mihai Maxim, Full Stack Developer @ WebScrapingAPI

Published Articles

15 articles

Python web scrapingJava web scrapingproxy infrastructurebrowser automationUse CasesGuidesScience of Web Scraping

Published Articles

How to Scrape Expedia with Python: Hotels and Prices
Guides

How to Scrape Expedia with Python: Hotels and Prices

TL;DR: Expedia relies on JavaScript rendering and anti-bot protections, so a plain requests call won't return hotel listings. This guide covers identifying CSS selectors with DevTools, building a working scraper via a scraping API, paginating across result pages, and exporting clean CSV data.

Mihai Maxim11 min read
Read Article
XPath vs CSS Selectors: Choosing the Right One
Use Cases

XPath vs CSS Selectors: Choosing the Right One

TL;DR: XPath and CSS selectors both locate DOM elements, but they solve different problems. CSS selectors are faster and more readable for straightforward selections. XPath wins when you need to traverse the DOM in any direction, match text content, or handle complex conditional logic. Most production projects benefit from using both strategically.

Mihai Maxim12 min read
Read Article
Web Scraping with Regex: A Practical Guide
Guides

Web Scraping with Regex: A Practical Guide

TL;DR: Web scraping with regex shines when you need short, predictable text patterns (prices, SKUs, emails, dates) out of HTML you already trust. Pair Python's re module with Beautiful Soup, scope your patterns to a parsed node instead of raw markup, and keep regex out of the way of full HTML tree parsing. This guide walks through a working title and price scraper, advanced regex features, and the pitfalls that bite real scrapers in production.

Mihai Maxim10 min read
Read Article
10 Questions to Answer Before You Write a Scraper
Science of Web Scraping

10 Questions to Answer Before You Write a Scraper

TL;DR: A web scraping project fails on planning long before it fails on code. These ten scraping questions walk you through legality, API alternatives, anti-bot defenses, cost, refresh cadence, data quality, and governance, so you scope the work, pick the right stack, and avoid the failure modes that quietly kill scrapers in production.

Mihai Maxim10 min read
Read Article
Start Using Web Stealth Proxy like a Pro: Quick Start Guide
Guides

Start Using Web Stealth Proxy like a Pro: Quick Start Guide

TL;DR: Discover how to use Web Stealth Proxy like a pro with our quick start guide. Get step-by-step instructions to boost your proxy game and take your online privacy to the next level. Start today!

Mihai Maxim5 min read
Read Article
Proxy Status Errors: Diagnose the Failed Request Hop
Guides

Proxy Status Errors: Diagnose the Failed Request Hop

TL;DR: Locate the failed hop before retrying a proxy request. Use status codes, CONNECT results, and safe diagnostic records to separate proxy failures from target responses.

Mihai Maxim13 min read
Read Article
How to Scrape HTML Table in JavaScript and Export Clean CSV
Guides

How to Scrape HTML Table in JavaScript and Export Clean CSV

TL;DR: First determine whether the table rows exist in the HTTP response, arrive through a data request, or require a browser to render. Then use the static Axios and Cheerio script or the focused Puppeteer path below to scrape HTML table in JavaScript, validate header-driven records, deduplicate pages, and write CSV safely. An HTML table organizes information into rows and columns, usually with <table>, <tr>, <th>, and <td> elements. To scrape HTML table in JavaScript means retrieving or rendering that markup, converting each data row into a JavaScript object, validating the result, and serializing it to a format such as CSV.

Mihai Maxim11 min read
Read Article
HTML Parsing in Java with Jsoup
Guides

HTML Parsing in Java with Jsoup

TL;DR: Jsoup is the default library for HTML parsing in Java. This guide walks the full lifecycle (Maven setup, loading a Document, CSS selectors, DOM traversal, extraction, modification, and serialization), plus a runnable scraping project, error handling, pagination, and the limits that push you toward a headless browser or scraping API.

Mihai Maxim11 min read
Read Article
Python Extract Text From HTML
Guides

Python Extract Text From HTML

TL;DR: To Python extract text from HTML, parse the markup with a real parser (BeautifulSoup, lxml.html, or html-text), strip scripts, styles, and site chrome, then normalize whitespace and Unicode before saving. This guide compares the main libraries, fixes the common cleanup traps, and ends with a runnable crawler that writes JSONL plus per-page .txt files.

Mihai Maxim22 min read
Read Article
Web Scraping with Scrapy: A Practical 2026 Playbook
Guides

Web Scraping with Scrapy: A Practical 2026 Playbook

TL;DR: This is an opinionated, end-to-end guide to web scraping with Scrapy in 2026. You will install Scrapy, prototype selectors in the shell, build a multi-page e-commerce spider, clean items with Item Loaders, persist to a database, harden settings against bans, and bolt on Scrapy-Playwright for JavaScript-rendered pages.

Mihai Maxim15 min read
Read Article
JavaScript With Scrapy: Data First, Render Only When Needed
Guides

JavaScript With Scrapy: Data First, Render Only When Needed

TL;DR: Using JavaScript with Scrapy does not always require a browser. First inspect the raw response, network requests, and embedded page state; add scrapy-playwright only when the target data truly depends on browser execution, then control waits, interactions, cleanup, and concurrency deliberately.

Mihai Maxim10 min read
Read Article
XPath Cheat Sheet for Web Scraping: Syntax, Axes, Code
Guides

XPath Cheat Sheet for Web Scraping: Syntax, Axes, Code

TL;DR: This XPath cheat sheet covers the syntax, predicates, axes, and functions you actually need for web scraping, plus a CSS-to-XPath translation table and runnable Puppeteer and Scrapy examples. Use it as a desk reference next time a CSS selector quietly breaks on a site you depend on.

Mihai Maxim13 min read
Read Article
8 Scrapy Alternatives: Choose by Bottleneck, Cost, and Risk
Guides

8 Scrapy Alternatives: Choose by Bottleneck, Cost, and Risk

TL;DR: The right choice depends on whether Scrapy's bottleneck is rendering, blocking, language fit, or operations. Keep or extend healthy spiders when possible; use browser tools for interactive pages, hosted platforms for operations, lightweight stacks for bounded static jobs, and managed APIs when request infrastructure is the constraint. Validate the shortlist with a cost model and a representative proof of concept.

Mihai Maxim16 min read
Read Article
Profit Scraper: Availability and Safer Alternatives
Guides

Profit Scraper: Availability and Safer Alternatives

TL;DR: Verify current service identity before following old Profit Scraper recommendations. Build a replacement workflow for listing data, sold-price research, and transparent cost assumptions.

Mihai Maxim12 min read
Read Article
Learn Web Scraping with Rust
Guides

Learn Web Scraping with Rust

TL;DR: Rust is a fast and memory-efficient language. But how does it handle web scraping? Check out this beginner-friendly guide and find out how you can use it to build a basic web scraper.

Mihai Maxim7 min read
Read Article

Start Building

Ready to Scale Your Data Collection?

Join 2,000+ companies using WebScrapingAPI to extract web data at enterprise scale with zero infrastructure overhead.