PyCon Davao 2026, 17 October 2026
Navigating the Grey: Building Resilient Python Scrapers That Survive at Scale
Scraping the store directories of Philippine malls in Python, from the first request to a 53-mall run.
- Organizer
- DurianPy
- Venue
- Ateneo de Davao University, Davao City
- Attendees
- 30
- Type
- Talk
- Level
- Intermediate
- Duration
- 30 minutes
- web scraping
- Python
- Playwright
- asyncio
- proxies

Abstract
A talk built on scraping the store directories of Philippine malls. It shows the three places data can live (static HTML, a JavaScript page, the page's own API), takes a 53-mall run from 32.5 s to 2.0 s with asyncio and one process per core, then covers rate limits, proxies, monitoring that fails loudly, and how to decide which barriers to stop at.
Outline
- What a web scraper is and where it sits in the data value chain
- Three doors to the data: static HTML, a JavaScript page, the page's own API
- Reading robots.txt before the page
- Where the time goes: sync, async, threads, and processes across 53 malls
- Rate limits and getting more per request
- What a site can see: IP, JavaScript, and proxies
- Containerizing the browser stack
- PengePassportPH: built-in limits and a canary that fails loudly
- Navigating the grey: what a barrier protects and who pays
Key takeaways
- Look before you scrape: the page's own API, then the HTML, then a browser
- Overlap the waiting, then use every core: asyncio for the waiting, one process per core for the parsing
- They set the bar: start low, back off on errors and Retry-After, and get more per request
- Fail loudly: a 200 can mean no, so check every answer and run a check on a schedule
- In the grey, ask who pays: what does the barrier protect, and would you sign your name to it?