<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://python-web-scraping.com/</loc>
    <lastmod>2026-05-16T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/about</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/browser-fingerprint-and-stealth-configuration</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/browser-fingerprint-and-stealth-configuration/spoofing-canvas-and-webgl-fingerprints</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/browser-fingerprint-and-stealth-configuration/undetected-chromedriver-vs-playwright-stealth</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/bypassing-cloudflare-and-akamai-protections</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/bypassing-cloudflare-and-akamai-protections/solving-captchas-with-python</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/mastering-selenium-for-dynamic-websites</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/mastering-selenium-for-dynamic-websites/explicit-vs-implicit-waits-in-selenium</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/mastering-selenium-for-dynamic-websites/how-to-configure-selenium-stealth-to-avoid-detection</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/rotating-proxies-and-managing-ip-blocks</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/rotating-proxies-and-managing-ip-blocks/best-free-and-paid-proxy-providers-for-scraping</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/rotating-proxies-and-managing-ip-blocks/how-to-rotate-user-agents-in-python</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/rotating-proxies-and-managing-ip-blocks/residential-vs-datacenter-proxies</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/scraping-mobile-app-apis</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/scraping-mobile-app-apis/handling-certificate-pinning-in-api-analysis</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/scraping-mobile-app-apis/intercepting-app-traffic-with-mitmproxy</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/scraping-mobile-app-apis/replaying-mobile-api-requests-in-python</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/tls-and-ja3-fingerprint-evasion</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/tls-and-ja3-fingerprint-evasion/using-curl-cffi-to-impersonate-browsers</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/using-playwright-for-modern-web-automation</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/using-playwright-for-modern-web-automation/handling-infinite-scroll-with-playwright</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/advanced-scraping-techniques-anti-bot-evasion/using-playwright-for-modern-web-automation/playwright-vs-selenium-performance-benchmarks</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/cleaning-and-validating-scraped-data</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/cleaning-and-validating-scraped-data/deduplicating-records-with-fuzzy-matching</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/cleaning-and-validating-scraped-data/normalizing-prices-dates-and-units</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/cleaning-and-validating-scraped-data/validating-scraped-data-with-pydantic</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/extracting-json-ld-and-structured-data</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/extracting-json-ld-and-structured-data/scraping-schema-org-product-data</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/parsing-json-and-xml-responses</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/parsing-json-and-xml-responses/flattening-nested-json-with-pandas</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/parsing-json-and-xml-responses/parsing-xml-sitemaps-with-python</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/reverse-engineering-private-apis</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/reverse-engineering-private-apis/finding-hidden-api-endpoints-in-network-traffic</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/scraping-graphql-endpoints</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/data-extraction-patterns-and-apis/scraping-graphql-endpoints/handling-graphql-pagination-and-cursors</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/asynchronous-scraping-with-asyncio-and-httpx</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/asynchronous-scraping-with-asyncio-and-httpx/httpx-vs-aiohttp-async-performance</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/asynchronous-scraping-with-asyncio-and-httpx/limiting-concurrency-with-semaphores</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/asynchronous-scraping-with-asyncio-and-httpx/retrying-failed-requests-with-tenacity</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/caching-and-incremental-crawling</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/caching-and-incremental-crawling/deduplicating-urls-with-bloom-filters</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/caching-and-incremental-crawling/http-caching-with-requests-cache</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/caching-and-incremental-crawling/incremental-crawls-with-etag-and-last-modified</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/deploying-scrapers-to-the-cloud</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/deploying-scrapers-to-the-cloud/running-scrapers-on-aws-lambda</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/deploying-scrapers-to-the-cloud/scheduling-scrapers-with-cron-and-github-actions</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/distributed-crawling-with-celery-and-redis</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/distributed-crawling-with-celery-and-redis/celery-vs-rq-for-scraping-task-queues</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/monitoring-and-alerting-for-scrapers</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/monitoring-and-alerting-for-scrapers/detecting-silent-scraper-failures</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/monitoring-and-alerting-for-scrapers/exporting-scrapy-metrics-to-prometheus</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/monitoring-and-alerting-for-scrapers/structured-logging-for-python-scrapers</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/storing-and-exporting-scraped-data</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/storing-and-exporting-scraped-data/exporting-scraped-data-to-csv-and-parquet</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/storing-and-exporting-scraped-data/saving-scraped-data-to-postgresql</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/web-scraping-with-scrapy</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/web-scraping-with-scrapy/scrapy-vs-beautifulsoup-which-to-use</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/web-scraping-with-scrapy/scrapy-vs-playwright-for-spas</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/scaling-python-web-scrapers/web-scraping-with-scrapy/writing-scrapy-item-pipelines</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/extracting-data-with-regular-expressions</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/extracting-data-with-regular-expressions/fixing-common-unicode-errors-in-python-scraping</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/handling-forms-and-authentication</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/handling-forms-and-authentication/handling-csrf-tokens-when-scraping</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/handling-forms-and-authentication/logging-in-with-python-requests</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/handling-forms-and-authentication/scraping-behind-bearer-tokens-and-oauth</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/handling-pagination-and-infinite-scroll</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/handling-pagination-and-infinite-scroll/how-to-scrape-a-static-website-without-getting-blocked</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/managing-cookies-and-sessions</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/managing-cookies-and-sessions/persisting-a-session-between-runs</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/parsing-html-with-beautifulsoup</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/parsing-html-with-beautifulsoup/beautifulsoup-vs-lxml-which-parser-is-faster</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/parsing-html-with-beautifulsoup/extracting-attributes-and-nested-tags</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/selecting-elements-with-xpath-and-css</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/selecting-elements-with-xpath-and-css/selecting-elements-by-visible-text-in-python</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/selecting-elements-with-xpath-and-css/writing-selectors-that-survive-a-redesign</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/selecting-elements-with-xpath-and-css/xpath-vs-css-selectors-which-to-use</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/setting-up-your-python-scraping-environment</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/setting-up-your-python-scraping-environment/how-to-install-python-and-requests-for-beginners</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/understanding-http-requests-and-responses</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
  <url>
    <loc>https://python-web-scraping.com/the-complete-guide-to-python-web-scraping/understanding-http-requests-and-responses/step-by-step-guide-to-extracting-tables-from-html</loc>
    <lastmod>2026-08-01T00:00:00.000Z</lastmod>
  </url>
</urlset>