PINGDOM_CHECK

#ExtractSummit2026 The world's largest web scraping conference returns. Austin Oct 7–8 · Dublin Nov 10–11.

Register now
Data Services
Pricing
Login
Try Zyte APIContact Sales
  • Unblocking and Extraction

    Zyte API

    The ultimate API for web scraping. Avoid website bans and access a headless browser or AI Parsing

    Ban Handling

    Headless Browser

    AI Extraction

    SERP

    Enterprise

    DocumentationSupport

    Hosting and Deployment

    Scrapy Cloud

    Run, monitor, and control your Scrapy spiders however you want to.

    Coding Agent Add-Ons

    Agentic Web Data

    Plugins that give coding agents the context to build production Scrapy projects. Starts with Claude Code.

  • Data Services
  • Pricing
  • Browse

    • BlogArticles, podcasts, videos
    • Case studiesCustomer outcomes
    • White papersIn-depth reports
    • EventsConferences, webinars, recordings

    Subscribe

    • NewsletterSwiftly delivered
    • Discord communityExtract Data community
  • Product and E-commerce

    From e-commerce and online marketplaces

    Data for AI

    Collect and structure web data to feed AI

    Job Posting

    From job boards and recruitment websites

    Real Estate

    From Listings portals and specialist websites

    News and Article

    From online publishers and news websites

    Search

    Search engine results page data (SERP)

    Social Media

    From social media platforms online

  • Meet Zyte

    Our story, people and values

    Contact us

    Get in touch

    Support

    Knowledge base and raise support tickets

    Terms and Policies

    Accept our terms and policies

    Open Source

    Our open source projects and contributions

    Web Data Compliance

    Guidelines and resources for compliant web data collection

    Join the team building the future of web data
    We're Hiring
    Trust Center
    Security, compliance & certifications
Login
Try Zyte APIContact Sales

Zyte Developers

Coding tools & hacks straight to your inbox

Become part of the community and receive a bi-weekly dosage of all things code.

Join us
    • Zyte Data
    • News & Articles
    • Search
    • Social Media
    • Product
    • Data for AI
    • Job Posting
    • Real Estate
    • Zyte API - Ban Handling
    • Zyte API - Headless Browser
    • Zyte API - AI Extraction
    • Web Scraping Copilot
    • Zyte API Enterprise
    • Scrapy Cloud
    • Solution Overview
    • Blog
    • Webinars
    • Case Studies
    • White Papers
    • Documentation
    • Web Scraping Maturity Self-Assesment
    • Web Data compliance
    • Meet Zyte
    • Jobs
    • Terms and Policies
    • Trust Center
    • Support
    • Contact us
    • Pricing
    • Do not sell
    • Cookie settings
    • Sign up
    • Talk to us
    • Cost estimator
All articles
AI60, 60 articles
Data quality13, 13 articles
Developer interest57, 57 articles
Integration2, 2 articles
Open-source40, 40 articles
Proxies29, 29 articles
Scraping practice17, 17 articles
Scraping strategy26, 26 articles
Web data60, 60 articles
Web scraping APIs33, 33 articles
Zyte API59, 59 articles
Scrapy48, 48 articles
Scrapy Cloud10, 10 articles
Web Scraping Copilot12, 12 articles
AI & Machine Learning1, 1 articles
Automotive2, 2 articles
E-commerce & retail26, 26 articles
Entertainment & Streaming2, 2 articles
Financial Services8, 8 articles
Government2, 2 articles
Market Research & Intelligence3, 3 articles
Media & publishing8, 8 articles
Real Estate2, 2 articles
Recruitment & HR3, 3 articles
Transportation & Logistics2, 2 articles
Travel & hospitality2, 2 articles
Extract Summit25, 25 articles
PyCon1, 1 articles

Appearance

Discord Community
BlogProduct UpdateData Extraction With Scrapy And Python 3
ArticleProduct Update

Data Extraction With Scrapy And Python 3

Data Extraction with Scrapy and Python - Learn the art of data extraction with Scrapy and Python. Harness the full potential of web scraping.

V

Valdir Stumm Junior

3 min read · May 25, 2016

Data Extraction With Scrapy And Python 3

Data extraction with Scrapy and Python 3

Scrapy 1.1 release with official Python 3 support

Fasten your seat belts, ladies and gentlemen: Scrapy 1.1 with Python 3 support is officially out! After a couple of months of hard work and four release candidates, this is the first official Scrapy release to support Python 3.

twitter scrapy 1.1

We know that many of you have been eagerly looking forward to moving your whole stack to Python 3. Well, wait no more, you can get rid of Python 2 once and for all (for the most part)!

Without further ado, let's dive into the nuts and bolts of this latest step forward.

What's new?

Python 3 support isn’t the only good news coming from this release. There are a few features and general improvements that you might want to be aware of:

  • Item Loaders now support nested loaders
  • `response.text` now holds the response body as unicode, while `response.body` holds the byte string version
  • `FormRequest.from_response` now accepts two new arguments: `formcss` and `formid`
  • Better HTTPS support: HTTPS downloader now does TLS protocol negotiation by default.
    • This requires recent Twisted (>=15.5 recommended) and PyOpenSSL versions
    • New setting: DOWNLOADER_CLIENT_TLS_METHOD
  • Scrapy now supports sending non-ASCII email, although sending emails is only supported by Scrapy running on Python 2
  • Projects created using Scrapy 1.1 automatically respect robots.txt
    • If you want to disable this for whatever reason, set ROBOTSTXT_OBEY to False
  • Scrapy now supports anonymous S3 connections
  • Non-ASCII URLs are now better supported and handled closer to what browsers do. (note that there's an open issue for link extraction)

Check out the release notes for a complete list of changes.

How to install

You can Install or upgrade Scrapy in your environment by running:

1$ pip install scrapy --upgrade
Copy

You can create a Python 3 virtualenv for Scrapy (e.g. using virtualenvwrapper):

1$ mkvirtualenv --python=/usr/bin/python3 scrapy11.py3
2 (scrapy11.py3) $ pip install scrapy
Copy

Limitations using Python 3

Scrapy on Python 3 doesn't work in Windows environments yet. Scrapy depends on Twisted and some parts of Twisted haven’t been ported yet. Once this Twisted issue is solved, Scrapy users with Windows will be able to run their spiders on Python 3.

In addition to this, there are a couple of features that are not supported on Python 3:

  • FTP download handler
  • Telnet console
  • Sending emails

Backward incompatible changes

Heads up, Scrapy users, Scrapy 1.1 introduces some minor backward-incompatible changes that might break your existing spiders:

  • Media pipelines:
    • Now when you upload files or images to S3, Scrapy sets them as private instead of public. You can change this behavior via the FILES_STORE_S3_ACL setting.
    • FilesPipeline and ImagesPipeline settings are now instance attributes instead of class attributes. There's a work in progress to solve this. (PR #1989)
  • canonicalize_url() has been changed (for the better). However, it could invalidate some HTTP cache entries you may have from pre-1.1 Scrapy crawls and break some link extractors as well.

A big Thank You to…

We couldn’t have done it without the help of all you folks reporting and fixing issues, requesting and submitting features, commenting on pull requests, improving documentation, etc., the list goes on.

Scrapy is a community and Scrapy 1.1 is the result of this community effort. You should be proud of yourselves. Kudos to all you Scrapy lovers!

We'd also like to nominate and thank everyone (in alphabetical order) who contributed directly to the Scrapy 1.1 source code:

Agustin Castro, Aivars Kalvāns, Alexander Chekunkov, Alexander Sibiryakov, Ally Weir, Andrew Murray, Andrew Scorpil, Aron Bordin, Artur Gaspar, Berker Peksag, Bryan Crowe, Capi Etheriel, Carlos Peña, cclauss, Chris Nilsson, Christian Pedersen, Daniel Collins, Daniel Graña, David Chen, David Tagatac, Demelziraptor, Dharmesh Pandav, dinesh, djunzu, Elias Dorneles, Gregory Vigo Torres, Hoat Le, hy, Jakob de Maeyer, Jamey Sharp, Julia Medina, Konstantin Lopuhin, Lele, Leonid Amirov, Luar Roji, Lucas Moauro, Marco DallaG, Marius Gedminas, Marven Sanchez, mgachhui, Mikhail Korobov, Mikhail Lyundin, nanolab, nblock, Nicolas Pennequin, Nikola Pavlović, Νικόλαος-Διγενής Καραγιάννης, nyov, Olaf Dietsche, orangain, Pablo Hoffman, palego, Panayiotis Lipiridis, Patrick Connolly, Paul Tremberth, Pawel Miech, Pengyu Chen, preetwinder, Rafał Gutkowski, Ralph Gutkowski, Raul Gallegos, Rick, Robert Weindl, Rolando Espinoza, seales, smirecki, Valdir Stumm Jr, Victor Mireyev, Yaroslav Halchenko and Zoltán Szeredi.

Without your efforts, none of this would be have been possible!

Wrap up

Python 3 support has been out in beta release for just a few months. Chances are that there are still some corner cases that have yet to be discovered. If you happen to face any unexpected behavior, please report your findings in the issue tracker.

You can also contribute to the Scrapy community in several ways, such as improving documentation, writing tutorials, fixing bugs, and including new features in Scrapy. Check the Contributions Guideline if you want to engage with this amazing community.

Happy Scraping!

Try Zyte API

Build your first scraper in minutes

Free trial, no credit card. From a single request to production in an afternoon.

Get started
Product Update
V

Valdir Stumm Junior

More from this author

In this article

  • Scrapy 1.1 release with official Python 3 support
  • What's new?
  • How to install
  • Limitations using Python 3
  • Backward incompatible changes
  • A big Thank You to…
  • Wrap up

Follow

Get the latest

Zyte and the data web in your inbox — or wherever you already are.

Subscribe

Or follow elsewhere

Continue reading

Play Before You Scrape: Explore Zyte API Settings with Playground
Product Update

Play Before You Scrape: Explore Zyte API Settings with Playground

Discover the best way to configure your scrapers using Zyte API Playground

Cleber Alexandre·10 Mins·February 10, 2025
New in Zyte: Scroll Control, Lower Costs, and More
Product Update

New in Zyte: Scroll Control, Lower Costs, and More

As the web continues to evolve, Zyte API is evolving right alongside it—adding powerful new features and refinements designed to make data extraction smarter, faster, and more adaptable than ever.

Daniel Cave·5 min·June 27, 2025
From products to SERPs: AI scraping now does it all
Product Update

From products to SERPs: AI scraping now does it all

Scale data extraction with Zyte’s composite AI, combining accuracy, flexibility, and cost-efficiency in one powerful scraping solution, now available for the most common data types.

Cleber Alexandre·10 mins·April 3, 2025

The Community · Newsletter

The best of Zyte and the data web, in your inbox.

One curated edition — new articles, product updates, and the stories shaping the data web. No noise.

G2.com

Capterra.com

Proxyway.com

EWDCI logoMost loved workplace certificateZyte rewardISO 27001 iconG2 rewardG2 rewardG2 reward

© Zyte Group Limited 2026