From 9ba07653c68bc3e6b58361e48cccc89ec4c6ef3c Mon Sep 17 00:00:00 2001 From: Ismael Carnales Date: Fri, 6 Feb 2009 16:20:49 +0000 Subject: [PATCH] added a proposed introduction (with all the main topics) to the proposed documentation, this would be the start for the new tutorial --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40828 --- .../proposed/_images/scrapy_architecture.odg | Bin 0 -> 19933 bytes .../proposed/_images/scrapy_architecture.png | Bin 0 -> 63853 bytes scrapy/trunk/docs/proposed/index.rst | 4 + scrapy/trunk/docs/proposed/introduction.rst | 129 ++++++++++++++++++ scrapy/trunk/docs/proposed/tutorial.rst | 21 ++- 5 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 scrapy/trunk/docs/proposed/_images/scrapy_architecture.odg create mode 100644 scrapy/trunk/docs/proposed/_images/scrapy_architecture.png create mode 100644 scrapy/trunk/docs/proposed/introduction.rst diff --git a/scrapy/trunk/docs/proposed/_images/scrapy_architecture.odg b/scrapy/trunk/docs/proposed/_images/scrapy_architecture.odg new file mode 100644 index 0000000000000000000000000000000000000000..0e7e6d0fb239b70ac450a21844b01b5bb7f6428d GIT binary patch literal 19933 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 QQYHX|p1{?pb)Fy|0B}VA-v9sr literal 0 HcmV?d00001 diff --git a/scrapy/trunk/docs/proposed/_images/scrapy_architecture.png b/scrapy/trunk/docs/proposed/_images/scrapy_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f2864b7852bc9de91448ccbf6c9395b54613edf3 GIT binary patch literal 63853 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

&Yey4R&C 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 literal 0 HcmV?d00001 diff --git a/scrapy/trunk/docs/proposed/index.rst b/scrapy/trunk/docs/proposed/index.rst index 3dddf6e45..07fb4678f 100644 --- a/scrapy/trunk/docs/proposed/index.rst +++ b/scrapy/trunk/docs/proposed/index.rst @@ -8,6 +8,10 @@ Proposed documentation This is experimental or "work in progress" documentation, use at your own risk! +.. toctree:: + + introduction + .. toctree:: :maxdepth: 1 diff --git a/scrapy/trunk/docs/proposed/introduction.rst b/scrapy/trunk/docs/proposed/introduction.rst new file mode 100644 index 000000000..25204d6db --- /dev/null +++ b/scrapy/trunk/docs/proposed/introduction.rst @@ -0,0 +1,129 @@ +============ +Introduction +============ + +.. architecture: + +Architecture +============ + +.. image:: _images/scrapy_architecture.png + :width: 700 + :height: 468 + :alt: Scrapy architecture + +.. _items: + +Items +===== + +In Scrapy, Items are the placeholder to use for the scraped data. They are +represented by a :class:`~scrapy.item.ScrapedItem` object, or any subclass +instance, and store the information in instance attributes. + +.. _request-response: + +Requests and Responses +====================== + +Scrapy uses :class:`~scrapy.http.Request` and :class:`~scrapy.http.Response` +objects for crawling web sites. + +Generally, :class:`~scrapy.http.Request` objects are generated in the +:ref:`Spiders ` (although they can be generated in any component of +the framework), then they pass across the system until they reach the +Downloader, which actually executes the request and returns a +:class:`~scrapy.http.Response` object to the :class:`Request's callback +function `. + +.. _spiders: + +Spiders +======= + +Spiders are user written classes which define how a certain site (or domain) +will be scraped; including how to crawl the site and how to scrape :ref:`Items +` from their pages. + +All Spiders must be descendant of :class:`~scrapy.spider.BaseSpider` or any +subclass of it, in :ref:`ref-spiders` you can see a list of available Spiders +in Scrapy. + +Scraping cycle +-------------- + +1. *Generating Requests*: + + The first step is to generate the initial :ref:`Requests + ` to crawl the first URLs, and specify a callback + function to be called with the :ref:`Response ` + downloaded from those :ref:`Requests `. + + The first :ref:`Requests `. to perform are obtained by + calling the :meth:`~scrapy.spider.BaseSpider.start_requests` method which + (by default) generates :class:`~scrapy.http.Request` for the URLs specified + in the :attr:`BaseSpider.start_urls` and the + :meth:`~scrapy.spider.BaseSpider.parse` method as callback function for the + :ref:`Requests `.. + +2. *Parsing Responses*: + + In callback functions you parse the :ref:`Response ` + contents and return an iterable object containing :ref:`Items `, + :ref:`Requests `, or both. + + Typically you do the parsing by using :ref:`selectors`, but you could also + use BeautifuSoup, lxml or the mechanism of your choice. + +3. *The final step*: + + Returned :ref:`Requests ` (if any) will be downloaded by + Scrapy and their :ref:`Responses ` handled to the + specified callback, wich could be the same than the one specified in the + first step. + + Returned :ref:`Items `. (if any) will be directed to the :ref:`Item + Pipeline `. + +.. _selectors: + +Selectors +========= + +Selectors are the recommended tool to extract information from documents. They +retrieve information from the :ref:`Response ` body using +`XPath `_, a language for finding information in a +XML document navigating trough its elements and attributes. + +Scrapy defines a class :class:`~scrapy.xpath.XPathSelector`, that comes in two +flavours, :class:`~scrapy.xpath.HtmlXPatSelector` (for HTML) and +:class:`~scrapy.xpath.XmlXPathSelector` (for XML). In order to use them you +must instantiate the desired class with a :ref:`Response ` +object. + +You can see selectors as objects that represents nodes in the document +structure. So, the first instantiated selectors are associated to the root +node, or the entire document. + +.. _item-pipeline: + +Item Pipeline +============= + +After an :ref:`Item ` has been scraped by a :ref:`Spider `, it +is sent to the Item Pipeline which allows us to perform some actions over the +:ref:`scrapped Items `. + +The Item Pipeline is a list of user written Python classes that define the +:meth:`process_item` method, which is called sequentially for every element. + +The :meth:`process_item` must return the Item object on a successful action, +or raise a :exception:`DropItem` exception (ex: failing a validation test). +Dropped :ref:`Items ` are no longer processed by further pipeline +components. + +Typical uses of the Item Pipeline include: + +* Clean the HTML in Item attributes +* Validate the Item +* Store the Item diff --git a/scrapy/trunk/docs/proposed/tutorial.rst b/scrapy/trunk/docs/proposed/tutorial.rst index eff8f95cd..affb92205 100644 --- a/scrapy/trunk/docs/proposed/tutorial.rst +++ b/scrapy/trunk/docs/proposed/tutorial.rst @@ -46,17 +46,34 @@ These are basically: The use of this files will be clarified throughout the tutorial, now let's go into spiders. +Requests and Responses +====================== + +Scrapy uses :class:`~scrapy.http.Request` and :class:`~scrapy.http.Response` +objects for crawling web sites. + +Generally, :class:`~scrapy.http.Request` objects are generated in the Spiders +(although they can be generated in any component of the framework), then they +pass across the system until they reach the Downloader, which actually executes +the request and returns a :class:`~scrapy.http.Response` object to the +:class:`Request's callback function `. + Spiders ======= -Spiders are custom modules written by you, the user, to scrape information from -a certain domain. Their duty is to feed the Scrapy engine with URLs to download, +Spiders are custom modules written by the user, to scrape information from a +certain domain (or group of domains). + +They feed the Engine with requests +Their duty is to feed the Scrapy engine with URLs to download, and then parse the downloaded contents in the search for data or more URLs to follow. They are the heart of a Scrapy project and where most part of the action takes place. +They generate Request objects for a set of initial URLs, and set the callback function to its parse method. + To create our first spider, save this code in a file named ``dmoz_spider.py`` inside ``dmoz/spiders`` folder::