Scrapy Python

Posted : admin On 1/25/2022

Scrapy is a Python framework for large scale web scraping. It gives you all the tools you need to efficiently extract data from websites, process them as you want, and store them in your preferred structure and format. Python has two main Web scrapers, Scrapy and BeautifulSoup. Before we proceed, any further, we’ll explain what makes Scrapy so great by comparing it and BeautfiulSoup. Both of them are free web scrapers so they are freely available to download and install. While working with Scrapy, one needs to create scrapy project. Scrapy startproject gfg. In Scrapy, always try to create one spider which helps to fetch data, so to create one, move to spider folder and create one python file over there. Create one spider with name python file. Step 4: Creating Spider.

Developer(s)Zyte (formerly Scrapinghub)
Initial release26 June 2008
Stable release
Written inPython
Operating systemWindows, macOS, Linux
TypeWeb crawler
LicenseBSD License

Scrapy (/ˈskrp/SKRAY-peye) is a free and open-sourceweb-crawlingframework written in Python. Originally designed for web scraping, it can also be used to extract data using APIs or as a general-purpose web crawler.[2] It is currently maintained by Zyte formerly Scrapinghub, a web-scraping development and services company.

Scrapy project architecture is built around 'spiders', which are self-contained crawlers that are given a set of instructions. Following the spirit of other don't repeat yourself frameworks, such as Django,[3] it makes it easier to build and scale large crawling projects by allowing developers to reuse their code. Scrapy also provides a web-crawling shell, which can be used by developers to test their assumptions on a site’s behavior.[4]

Some well-known companies and products using Scrapy are: Lyst,[5][6],[7]Sayone Technologies,[8]Sciences Po Medialab,[9]’s World Government Data site.[10][1]


Scrapy was born at London-based web-aggregation and e-commerce company Mydeco, where it was developed and maintained by employees of Mydeco and Insophia (a web-consulting company based in Montevideo, Uruguay). The first public release was in August 2008 under the BSD license, with a milestone 1.0 release happening in June 2015.[11] In 2011, Zyte (formerly Scrapinghub) became the new official maintainer.[12][13]


  1. ^'Release notes — Scrapy documentation'. Retrieved 18 November 2020.CS1 maint: discouraged parameter (link)
  2. ^Scrapy at a glance.
  3. ^'Frequently Asked Questions'. Retrieved 28 July 2015.
  4. ^'Scrapy shell'. Retrieved 28 July 2015.
  5. ^Bell, Eddie; Heusser, Jonathan. 'Scalable Scraping Using Machine Learning'. Retrieved 28 July 2015.
  6. ^Scrapy Companies using Scrapy
  7. ^Montalenti, Andrew. 'Web Crawling & Metadata Extraction in Python'.
  8. ^'Scrapy Companies'. Scrapy website.
  9. ^Hyphe v0.0.0: the first release of our new webcrawler is out!
  10. ^Ben Firshman [@bfirsh] (21 January 2010). 'World Govt Data site uses Django, Solr, Haystack, Scrapy and other exciting buzzwords #opendata #datastore' (Tweet) – via Twitter.
  11. ^Medina, Julia (19 June 2015). 'Scrapy 1.0 official release out!'. scrapy-users (Mailing list).
  12. ^Pablo Hoffman (2013). List of the primary authors & contributors. Retrieved 18 November 2013.CS1 maint: discouraged parameter (link)
  13. ^Interview Scraping Hub.

External links[edit]

  • Official website
Retrieved from ''
Latest version


A package for offering UI tools for building scrapy queries

Project description

Requires Python 3.6+

A simple, Qt-Webengine powered web browser with built in functionality for testing scrapy spider code.

Also includes an addon to enable a GUI for use with the scrapy shell.

Table of Contents

  • Standalone UI
    • Tools Tab
  • Integration with Scrapy Shell

You can import the package from PyPi using

pip install scrapy_gui

Then you can import it to a shell using import scrapy_gui.

The standlaone UI can be opened by using scrapy_gui.open_browser() from a python shell. This consists of a web browser and a set of tools to analyse its contents.

Browser Tab

Enter any url into search bar and hit return or press the Go button. When the loading animation finishes it will be ready to parse in the Tools tab.

Tools Tab

The tools tab contains various sections for parsing content of the page. The purpose of this tab is to make it easy to test queries and code for use in a scrapy spider.

NOTE: This will use the initial html response. If additional requests, javascript, etc alter the page later this will not be taken into account.

It will load the initial html with an additional request using the requests package. When running a query it will create a selector object using Selection from the parsel package.

Query Box

The query box lets you use parsel compatible CSS and XPath queries to extract data from the page.

It returns results as though selection.css/xpath('YOUR QUERY').getall() was called.

If there are no results or there is an error in the query a dialogue will pop up informing you of the issue.

Regex Box

This box lets you add a regular expression pattern to be used in addition to the previous css query.

It returns results as though selection.css/xpath('YOUR QUERY').re(r'YOUR REGEX')' was called. This means that if you use groups it will only return the content within parenthesis.

Function Box

This box lets you define additional python code that can run on the results of your query and regex. The code can be as long and complex as you want, including adding additional functions, classes, imports etc.

The only requirement is you must include a function called user_fun(results, selector) that returns a list.

Results Box

This table will list all the results, passed through the regex and function if defined.

Source Tab

This tab contains the html source that is used in the Tools tab. You can use the text box to search for specific content. All searches are not case sensitive.

Notes Tab

This is just a plain text box. Content in here is not saved when you exit the app.

It is possible to integrate this tool with the scrapy shell. This will allow you to use it on responses that have been passed through your middlewares, access more complex requests and more specific selectors.


To use it in your shell import the load_selector method using:

from scrapy_gui import load_selector

Then you can write load_selector(YOUR_SELECTOR) to open a window with your selector loaded into it.

For example load_selector(response) will load your response into the UI.

When you run the code a window named Scrapy GUI will open that contains the Tools, Source and Notes tabs from the standalone window mentioned above.

Release historyRelease notifications RSS feed










Download files


Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for scrapy-GUI, version 1.2
Filename, sizeFile typePython versionUpload dateHashes
Filename, size scrapy_GUI-1.2-py3-none-any.whl (72.6 kB) File type Wheel Python version py3 Upload dateHashes
Filename, size scrapy-GUI-1.2.tar.gz (72.5 kB) File type Source Python version None Upload dateHashes

Hashes for scrapy_GUI-1.2-py3-none-any.whl

Scrapy Python Package

Hashes for scrapy_GUI-1.2-py3-none-any.whl
AlgorithmHash digest

Hashes for scrapy-GUI-1.2.tar.gz

Scrapy Python Mysql

Hashes for scrapy-GUI-1.2.tar.gz
AlgorithmHash digest