From d9560bcda2b3296517357cbd79dd669096ec27a5 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Sun, 11 May 2014 13:11:46 +0530 Subject: [PATCH] Gets upto n number of pages --- output.json | 247 ++++++----------------------- try_scrapy/spiders/test_spider.py | 41 +++-- try_scrapy/spiders/test_spider.pyc | Bin 1520 -> 2114 bytes 3 files changed, 82 insertions(+), 206 deletions(-) diff --git a/output.json b/output.json index 887c7ef..010e0c5 100644 --- a/output.json +++ b/output.json @@ -1,197 +1,50 @@ -[{"course_link": "http://www.lynda.com/ASPNET-tutorials/Up-Running-ASPNET/158377-2.html", "course_title": "Up and Running with ASP.NET"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Exporting-Data-Files-PHP/158375-2.html", "course_title": "Exporting Data to Files with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Design-tutorials/Up-Running-CoffeeScript/154415-2.html", "course_title": "Up and Running with CoffeeScript"}, -{"course_link": "http://www.lynda.com/Visual-Studio-tutorials/Visual-Studio-2013-Web-Developers/157134-2.html", "course_title": "Visual Studio 2013 for Web Developers"}, -{"course_link": "http://www.lynda.com/Developer-Programming-Languages-tutorials/Building-Web-Services-Java-EE/149837-2.html", "course_title": "Building Web Services with Java EE"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Uploading-Files-Securely-PHP/158374-2.html", "course_title": "Uploading Files Securely with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Development-tutorials/Foundations-Programming-Web-Security/133330-2.html", "course_title": "Foundations of Programming: Web Security"}, -{"course_link": "http://www.lynda.com/Brackets-tutorials/Adobe-Edge-Code-Brackets-First-Look/149704-2.html", "course_title": "Adobe Edge Code and Brackets: First Look"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-4-Essential-Training/139989-2.html", "course_title": "Ruby on Rails 4 Essential Training"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/PHP-Web-Designers/146234-2.html", "course_title": "PHP for Web Designers"}, -{"course_link": "http://www.lynda.com/CakePHP-tutorials/Up-Running-CakePHP/126123-2.html", "course_title": "Up and Running with CakePHP"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Choosing-PHP-Editor/139995-2.html", "course_title": "Choosing a PHP Editor"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-Events/140780-2.html", "course_title": "JavaScript: Events"}, -{"course_link": "http://www.lynda.com/Joomla-tutorials/Joomla-3-Essential-Training/110275-2.html", "course_title": "Joomla! 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Shopify-tutorials/Up-Running-Shopify/133352-2.html", "course_title": "Up and Running with Shopify"}, -{"course_link": "http://www.lynda.com/OData-tutorials/Foundations-Programming-Web-Services/126131-2.html", "course_title": "Foundations of Programming: Web Services"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/Working-Data-Web/133326-2.html", "course_title": "Working with Data on the Web"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure/128285-2.html", "course_title": "Up and Running with Azure"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure-Mobile-Services/135357-2.html", "course_title": "Up and Running with Azure Mobile Services"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-3-Advanced-Web-Development/124079-2.html", "course_title": "Bootstrap 3: Advanced Web Development"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-3-Essential-Training/55960-2.html", "course_title": "Ruby on Rails 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Emmet-tutorials/Coding-Faster-Emmet/133353-2.html", "course_title": "Coding Faster with Emmet"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Interactive-Animated-Timeline-jQuery/124092-2.html", "course_title": "Create an Interactive Animated Timeline with jQuery"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/Start-Theme-Food-Blogs-WordPress/133348-2.html", "course_title": "Start with a Theme: Food Blogs in WordPress"}, -{"course_link": "http://www.lynda.com/CodeIgniter-tutorials/Up-Running-PHP-CodeIgniter/126122-2.html", "course_title": "Up and Running with PHP CodeIgniter"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Creating-Responsive-Presentation/129007-2.html", "course_title": "HTML5 Projects: Creating a Responsive Presentation"}, -{"course_link": "http://www.lynda.com/Dreamweaver-tutorials/Dreamweaver-CC-Essential-Training/124084-2.html", "course_title": "Dreamweaver CC Essential Training"}, -{"course_link": "http://www.lynda.com/HTML-tutorials/JavaScript-Enhancing-DOM/122462-2.html", "course_title": "JavaScript: Enhancing the DOM"}, -{"course_link": "http://www.lynda.com/MySQL-tutorials/PHP-MySQL-Essential-Training/119003-2.html", "course_title": "PHP with MySQL Essential Training"}, -{"course_link": "http://www.lynda.com/Composer-tutorials/Up-Running-PHP-PEAR-PECL-Composer/119001-2.html", "course_title": "Up and Running with PHP: PEAR, PECL, and Composer"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/jQuery-Essential-Training/48370-2.html", "course_title": "jQuery Essential Training"}, -{"course_link": "http://www.lynda.com/Foundation-tutorials/Up-Running-Foundation/122442-2.html", "course_title": "Up and Running with Foundation"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-Adding-Interactivity-Your-Site/122456-2.html", "course_title": "Bootstrap: Adding Interactivity to Your Site"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Easy-Digital-Downloads/122465-2.html", "course_title": "WordPress Ecommerce: Easy Digital Downloads"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Animated-Infographic-Edge-Animate/124091-2.html", "course_title": "Creating an Animated Infographic with Edge Animate"}, -{"course_link": "http://www.lynda.com/Developer-Databases-tutorials/Validating-Processing-Forms-JavaScript-PHP/120466-2.html", "course_title": "Validating and Processing Forms with JavaScript and PHP"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Core-Concepts/122463-2.html", "course_title": "WordPress Ecommerce: Core Concepts"}, -{"course_link": "http://www.lynda.com/Backbonejs-tutorials/Up-Running-Backbonejs/120900-2.html", "course_title": "Up and Running with Backbone.js"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Interactive-Projects-Edge-Animate/124307-2.html", "course_title": "Creating Interactive Projects with Edge Animate"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Sortable-Photo-Gallery-jQuery/114897-2.html", "course_title": "Create a Sortable Photo Gallery with jQuery"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-JSON/114901-2.html", "course_title": "JavaScript and JSON"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Create-Homepage-Marquee-Edge-Animate/114898-2.html", "course_title": "Create a Homepage Marquee with Edge Animate"}, -{"course_link": "http://www.lynda.com/Visual-Studio-Express-tutorials/Building-Windows-Store-Game-Using-HTML-JavaScript/114892-2.html", "course_title": "Building a Windows Store Game Using HTML and JavaScript"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Geolocation/118953-2.html", "course_title": "HTML5 Projects: Integrating Google Store Locator"}, -{"course_link": "http://www.lynda.com/ASP-NET-3-5-tutorials/asp-net-essential-training/784-2.html", "course_title": "ASP.NET Essential Training"}, -{"course_link": "http://www.lynda.com/Sublime-Text-tutorials/Up-Running-Sublime-Text-2/114325-2.html", "course_title": "Up and Running with Sublime Text 2"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/CSS-Frameworks-Grids/112675-2.html", "course_title": "CSS: Frameworks and Grids"}, -{"course_link": "http://www.lynda.com/Developer-tutorials/JavaScript-and-AJAX/114900-2.html", "course_title": "JavaScript and AJAX"}, -{"course_link": "http://www.lynda.com/Facebook-tutorials/Building-Facebook-Applications-PHP-MySQL/107060-2.html", "course_title": "Building Facebook Applications with PHP and MySQL"}, -{"course_link": "http://www.lynda.com/Drupal-tutorials/Responsive-Design-Drupal/107419-2.html", "course_title": "Responsive Design with Drupal"}][{"course_link": "http://www.lynda.com/ASPNET-tutorials/Up-Running-ASPNET/158377-2.html", "course_title": "Up and Running with ASP.NET"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Exporting-Data-Files-PHP/158375-2.html", "course_title": "Exporting Data to Files with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Design-tutorials/Up-Running-CoffeeScript/154415-2.html", "course_title": "Up and Running with CoffeeScript"}, -{"course_link": "http://www.lynda.com/Visual-Studio-tutorials/Visual-Studio-2013-Web-Developers/157134-2.html", "course_title": "Visual Studio 2013 for Web Developers"}, -{"course_link": "http://www.lynda.com/Developer-Programming-Languages-tutorials/Building-Web-Services-Java-EE/149837-2.html", "course_title": "Building Web Services with Java EE"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Uploading-Files-Securely-PHP/158374-2.html", "course_title": "Uploading Files Securely with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Development-tutorials/Foundations-Programming-Web-Security/133330-2.html", "course_title": "Foundations of Programming: Web Security"}, -{"course_link": "http://www.lynda.com/Brackets-tutorials/Adobe-Edge-Code-Brackets-First-Look/149704-2.html", "course_title": "Adobe Edge Code and Brackets: First Look"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-4-Essential-Training/139989-2.html", "course_title": "Ruby on Rails 4 Essential Training"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/PHP-Web-Designers/146234-2.html", "course_title": "PHP for Web Designers"}, -{"course_link": "http://www.lynda.com/CakePHP-tutorials/Up-Running-CakePHP/126123-2.html", "course_title": "Up and Running with CakePHP"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Choosing-PHP-Editor/139995-2.html", "course_title": "Choosing a PHP Editor"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-Events/140780-2.html", "course_title": "JavaScript: Events"}, -{"course_link": "http://www.lynda.com/Joomla-tutorials/Joomla-3-Essential-Training/110275-2.html", "course_title": "Joomla! 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Shopify-tutorials/Up-Running-Shopify/133352-2.html", "course_title": "Up and Running with Shopify"}, -{"course_link": "http://www.lynda.com/OData-tutorials/Foundations-Programming-Web-Services/126131-2.html", "course_title": "Foundations of Programming: Web Services"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/Working-Data-Web/133326-2.html", "course_title": "Working with Data on the Web"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure/128285-2.html", "course_title": "Up and Running with Azure"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure-Mobile-Services/135357-2.html", "course_title": "Up and Running with Azure Mobile Services"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-3-Advanced-Web-Development/124079-2.html", "course_title": "Bootstrap 3: Advanced Web Development"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-3-Essential-Training/55960-2.html", "course_title": "Ruby on Rails 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Emmet-tutorials/Coding-Faster-Emmet/133353-2.html", "course_title": "Coding Faster with Emmet"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Interactive-Animated-Timeline-jQuery/124092-2.html", "course_title": "Create an Interactive Animated Timeline with jQuery"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/Start-Theme-Food-Blogs-WordPress/133348-2.html", "course_title": "Start with a Theme: Food Blogs in WordPress"}, -{"course_link": "http://www.lynda.com/CodeIgniter-tutorials/Up-Running-PHP-CodeIgniter/126122-2.html", "course_title": "Up and Running with PHP CodeIgniter"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Creating-Responsive-Presentation/129007-2.html", "course_title": "HTML5 Projects: Creating a Responsive Presentation"}, -{"course_link": "http://www.lynda.com/Dreamweaver-tutorials/Dreamweaver-CC-Essential-Training/124084-2.html", "course_title": "Dreamweaver CC Essential Training"}, -{"course_link": "http://www.lynda.com/HTML-tutorials/JavaScript-Enhancing-DOM/122462-2.html", "course_title": "JavaScript: Enhancing the DOM"}, -{"course_link": "http://www.lynda.com/MySQL-tutorials/PHP-MySQL-Essential-Training/119003-2.html", "course_title": "PHP with MySQL Essential Training"}, -{"course_link": "http://www.lynda.com/Composer-tutorials/Up-Running-PHP-PEAR-PECL-Composer/119001-2.html", "course_title": "Up and Running with PHP: PEAR, PECL, and Composer"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/jQuery-Essential-Training/48370-2.html", "course_title": "jQuery Essential Training"}, -{"course_link": "http://www.lynda.com/Foundation-tutorials/Up-Running-Foundation/122442-2.html", "course_title": "Up and Running with Foundation"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-Adding-Interactivity-Your-Site/122456-2.html", "course_title": "Bootstrap: Adding Interactivity to Your Site"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Easy-Digital-Downloads/122465-2.html", "course_title": "WordPress Ecommerce: Easy Digital Downloads"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Animated-Infographic-Edge-Animate/124091-2.html", "course_title": "Creating an Animated Infographic with Edge Animate"}, -{"course_link": "http://www.lynda.com/Developer-Databases-tutorials/Validating-Processing-Forms-JavaScript-PHP/120466-2.html", "course_title": "Validating and Processing Forms with JavaScript and PHP"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Core-Concepts/122463-2.html", "course_title": "WordPress Ecommerce: Core Concepts"}, -{"course_link": "http://www.lynda.com/Backbonejs-tutorials/Up-Running-Backbonejs/120900-2.html", "course_title": "Up and Running with Backbone.js"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Interactive-Projects-Edge-Animate/124307-2.html", "course_title": "Creating Interactive Projects with Edge Animate"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Sortable-Photo-Gallery-jQuery/114897-2.html", "course_title": "Create a Sortable Photo Gallery with jQuery"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-JSON/114901-2.html", "course_title": "JavaScript and JSON"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Create-Homepage-Marquee-Edge-Animate/114898-2.html", "course_title": "Create a Homepage Marquee with Edge Animate"}, -{"course_link": "http://www.lynda.com/Visual-Studio-Express-tutorials/Building-Windows-Store-Game-Using-HTML-JavaScript/114892-2.html", "course_title": "Building a Windows Store Game Using HTML and JavaScript"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Geolocation/118953-2.html", "course_title": "HTML5 Projects: Integrating Google Store Locator"}, -{"course_link": "http://www.lynda.com/ASP-NET-3-5-tutorials/asp-net-essential-training/784-2.html", "course_title": "ASP.NET Essential Training"}, -{"course_link": "http://www.lynda.com/Sublime-Text-tutorials/Up-Running-Sublime-Text-2/114325-2.html", "course_title": "Up and Running with Sublime Text 2"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/CSS-Frameworks-Grids/112675-2.html", "course_title": "CSS: Frameworks and Grids"}, -{"course_link": "http://www.lynda.com/Developer-tutorials/JavaScript-and-AJAX/114900-2.html", "course_title": "JavaScript and AJAX"}, -{"course_link": "http://www.lynda.com/Facebook-tutorials/Building-Facebook-Applications-PHP-MySQL/107060-2.html", "course_title": "Building Facebook Applications with PHP and MySQL"}, -{"course_link": "http://www.lynda.com/Drupal-tutorials/Responsive-Design-Drupal/107419-2.html", "course_title": "Responsive Design with Drupal"}][{"course_link": "http://www.lynda.com/ASPNET-tutorials/Up-Running-ASPNET/158377-2.html", "course_title": "Up and Running with ASP.NET"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Exporting-Data-Files-PHP/158375-2.html", "course_title": "Exporting Data to Files with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Design-tutorials/Up-Running-CoffeeScript/154415-2.html", "course_title": "Up and Running with CoffeeScript"}, -{"course_link": "http://www.lynda.com/Visual-Studio-tutorials/Visual-Studio-2013-Web-Developers/157134-2.html", "course_title": "Visual Studio 2013 for Web Developers"}, -{"course_link": "http://www.lynda.com/Developer-Programming-Languages-tutorials/Building-Web-Services-Java-EE/149837-2.html", "course_title": "Building Web Services with Java EE"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Uploading-Files-Securely-PHP/158374-2.html", "course_title": "Uploading Files Securely with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Development-tutorials/Foundations-Programming-Web-Security/133330-2.html", "course_title": "Foundations of Programming: Web Security"}, -{"course_link": "http://www.lynda.com/Brackets-tutorials/Adobe-Edge-Code-Brackets-First-Look/149704-2.html", "course_title": "Adobe Edge Code and Brackets: First Look"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-4-Essential-Training/139989-2.html", "course_title": "Ruby on Rails 4 Essential Training"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/PHP-Web-Designers/146234-2.html", "course_title": "PHP for Web Designers"}, -{"course_link": "http://www.lynda.com/CakePHP-tutorials/Up-Running-CakePHP/126123-2.html", "course_title": "Up and Running with CakePHP"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Choosing-PHP-Editor/139995-2.html", "course_title": "Choosing a PHP Editor"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-Events/140780-2.html", "course_title": "JavaScript: Events"}, -{"course_link": "http://www.lynda.com/Joomla-tutorials/Joomla-3-Essential-Training/110275-2.html", "course_title": "Joomla! 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Shopify-tutorials/Up-Running-Shopify/133352-2.html", "course_title": "Up and Running with Shopify"}, -{"course_link": "http://www.lynda.com/OData-tutorials/Foundations-Programming-Web-Services/126131-2.html", "course_title": "Foundations of Programming: Web Services"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/Working-Data-Web/133326-2.html", "course_title": "Working with Data on the Web"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure/128285-2.html", "course_title": "Up and Running with Azure"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure-Mobile-Services/135357-2.html", "course_title": "Up and Running with Azure Mobile Services"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-3-Advanced-Web-Development/124079-2.html", "course_title": "Bootstrap 3: Advanced Web Development"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-3-Essential-Training/55960-2.html", "course_title": "Ruby on Rails 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Emmet-tutorials/Coding-Faster-Emmet/133353-2.html", "course_title": "Coding Faster with Emmet"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Interactive-Animated-Timeline-jQuery/124092-2.html", "course_title": "Create an Interactive Animated Timeline with jQuery"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/Start-Theme-Food-Blogs-WordPress/133348-2.html", "course_title": "Start with a Theme: Food Blogs in WordPress"}, -{"course_link": "http://www.lynda.com/CodeIgniter-tutorials/Up-Running-PHP-CodeIgniter/126122-2.html", "course_title": "Up and Running with PHP CodeIgniter"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Creating-Responsive-Presentation/129007-2.html", "course_title": "HTML5 Projects: Creating a Responsive Presentation"}, -{"course_link": "http://www.lynda.com/Dreamweaver-tutorials/Dreamweaver-CC-Essential-Training/124084-2.html", "course_title": "Dreamweaver CC Essential Training"}, -{"course_link": "http://www.lynda.com/HTML-tutorials/JavaScript-Enhancing-DOM/122462-2.html", "course_title": "JavaScript: Enhancing the DOM"}, -{"course_link": "http://www.lynda.com/MySQL-tutorials/PHP-MySQL-Essential-Training/119003-2.html", "course_title": "PHP with MySQL Essential Training"}, -{"course_link": "http://www.lynda.com/Composer-tutorials/Up-Running-PHP-PEAR-PECL-Composer/119001-2.html", "course_title": "Up and Running with PHP: PEAR, PECL, and Composer"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/jQuery-Essential-Training/48370-2.html", "course_title": "jQuery Essential Training"}, -{"course_link": "http://www.lynda.com/Foundation-tutorials/Up-Running-Foundation/122442-2.html", "course_title": "Up and Running with Foundation"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-Adding-Interactivity-Your-Site/122456-2.html", "course_title": "Bootstrap: Adding Interactivity to Your Site"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Easy-Digital-Downloads/122465-2.html", "course_title": "WordPress Ecommerce: Easy Digital Downloads"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Animated-Infographic-Edge-Animate/124091-2.html", "course_title": "Creating an Animated Infographic with Edge Animate"}, -{"course_link": "http://www.lynda.com/Developer-Databases-tutorials/Validating-Processing-Forms-JavaScript-PHP/120466-2.html", "course_title": "Validating and Processing Forms with JavaScript and PHP"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Core-Concepts/122463-2.html", "course_title": "WordPress Ecommerce: Core Concepts"}, -{"course_link": "http://www.lynda.com/Backbonejs-tutorials/Up-Running-Backbonejs/120900-2.html", "course_title": "Up and Running with Backbone.js"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Interactive-Projects-Edge-Animate/124307-2.html", "course_title": "Creating Interactive Projects with Edge Animate"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Sortable-Photo-Gallery-jQuery/114897-2.html", "course_title": "Create a Sortable Photo Gallery with jQuery"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-JSON/114901-2.html", "course_title": "JavaScript and JSON"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Create-Homepage-Marquee-Edge-Animate/114898-2.html", "course_title": "Create a Homepage Marquee with Edge Animate"}, -{"course_link": "http://www.lynda.com/Visual-Studio-Express-tutorials/Building-Windows-Store-Game-Using-HTML-JavaScript/114892-2.html", "course_title": "Building a Windows Store Game Using HTML and JavaScript"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Geolocation/118953-2.html", "course_title": "HTML5 Projects: Integrating Google Store Locator"}, -{"course_link": "http://www.lynda.com/ASP-NET-3-5-tutorials/asp-net-essential-training/784-2.html", "course_title": "ASP.NET Essential Training"}, -{"course_link": "http://www.lynda.com/Sublime-Text-tutorials/Up-Running-Sublime-Text-2/114325-2.html", "course_title": "Up and Running with Sublime Text 2"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/CSS-Frameworks-Grids/112675-2.html", "course_title": "CSS: Frameworks and Grids"}, -{"course_link": "http://www.lynda.com/Developer-tutorials/JavaScript-and-AJAX/114900-2.html", "course_title": "JavaScript and AJAX"}, -{"course_link": "http://www.lynda.com/Facebook-tutorials/Building-Facebook-Applications-PHP-MySQL/107060-2.html", "course_title": "Building Facebook Applications with PHP and MySQL"}, -{"course_link": "http://www.lynda.com/Drupal-tutorials/Responsive-Design-Drupal/107419-2.html", "course_title": "Responsive Design with Drupal"}][{"course_link": "http://www.lynda.com/ASPNET-tutorials/Up-Running-ASPNET/158377-2.html", "course_title": "Up and Running with ASP.NET"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Exporting-Data-Files-PHP/158375-2.html", "course_title": "Exporting Data to Files with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Design-tutorials/Up-Running-CoffeeScript/154415-2.html", "course_title": "Up and Running with CoffeeScript"}, -{"course_link": "http://www.lynda.com/Visual-Studio-tutorials/Visual-Studio-2013-Web-Developers/157134-2.html", "course_title": "Visual Studio 2013 for Web Developers"}, -{"course_link": "http://www.lynda.com/Developer-Programming-Languages-tutorials/Building-Web-Services-Java-EE/149837-2.html", "course_title": "Building Web Services with Java EE"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Uploading-Files-Securely-PHP/158374-2.html", "course_title": "Uploading Files Securely with PHP"}, -{"course_link": "http://www.lynda.com/Developer-Web-Development-tutorials/Foundations-Programming-Web-Security/133330-2.html", "course_title": "Foundations of Programming: Web Security"}, -{"course_link": "http://www.lynda.com/Brackets-tutorials/Adobe-Edge-Code-Brackets-First-Look/149704-2.html", "course_title": "Adobe Edge Code and Brackets: First Look"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-4-Essential-Training/139989-2.html", "course_title": "Ruby on Rails 4 Essential Training"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/PHP-Web-Designers/146234-2.html", "course_title": "PHP for Web Designers"}, -{"course_link": "http://www.lynda.com/CakePHP-tutorials/Up-Running-CakePHP/126123-2.html", "course_title": "Up and Running with CakePHP"}, -{"course_link": "http://www.lynda.com/PHP-tutorials/Choosing-PHP-Editor/139995-2.html", "course_title": "Choosing a PHP Editor"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-Events/140780-2.html", "course_title": "JavaScript: Events"}, -{"course_link": "http://www.lynda.com/Joomla-tutorials/Joomla-3-Essential-Training/110275-2.html", "course_title": "Joomla! 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Shopify-tutorials/Up-Running-Shopify/133352-2.html", "course_title": "Up and Running with Shopify"}, -{"course_link": "http://www.lynda.com/OData-tutorials/Foundations-Programming-Web-Services/126131-2.html", "course_title": "Foundations of Programming: Web Services"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/Working-Data-Web/133326-2.html", "course_title": "Working with Data on the Web"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure/128285-2.html", "course_title": "Up and Running with Azure"}, -{"course_link": "http://www.lynda.com/Azure-tutorials/Up-Running-Azure-Mobile-Services/135357-2.html", "course_title": "Up and Running with Azure Mobile Services"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-3-Advanced-Web-Development/124079-2.html", "course_title": "Bootstrap 3: Advanced Web Development"}, -{"course_link": "http://www.lynda.com/Ruby-Rails-tutorials/Ruby-Rails-3-Essential-Training/55960-2.html", "course_title": "Ruby on Rails 3 Essential Training"}, -{"course_link": "http://www.lynda.com/Emmet-tutorials/Coding-Faster-Emmet/133353-2.html", "course_title": "Coding Faster with Emmet"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Interactive-Animated-Timeline-jQuery/124092-2.html", "course_title": "Create an Interactive Animated Timeline with jQuery"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/Start-Theme-Food-Blogs-WordPress/133348-2.html", "course_title": "Start with a Theme: Food Blogs in WordPress"}, -{"course_link": "http://www.lynda.com/CodeIgniter-tutorials/Up-Running-PHP-CodeIgniter/126122-2.html", "course_title": "Up and Running with PHP CodeIgniter"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Creating-Responsive-Presentation/129007-2.html", "course_title": "HTML5 Projects: Creating a Responsive Presentation"}, -{"course_link": "http://www.lynda.com/Dreamweaver-tutorials/Dreamweaver-CC-Essential-Training/124084-2.html", "course_title": "Dreamweaver CC Essential Training"}, -{"course_link": "http://www.lynda.com/HTML-tutorials/JavaScript-Enhancing-DOM/122462-2.html", "course_title": "JavaScript: Enhancing the DOM"}, -{"course_link": "http://www.lynda.com/MySQL-tutorials/PHP-MySQL-Essential-Training/119003-2.html", "course_title": "PHP with MySQL Essential Training"}, -{"course_link": "http://www.lynda.com/Composer-tutorials/Up-Running-PHP-PEAR-PECL-Composer/119001-2.html", "course_title": "Up and Running with PHP: PEAR, PECL, and Composer"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/jQuery-Essential-Training/48370-2.html", "course_title": "jQuery Essential Training"}, -{"course_link": "http://www.lynda.com/Foundation-tutorials/Up-Running-Foundation/122442-2.html", "course_title": "Up and Running with Foundation"}, -{"course_link": "http://www.lynda.com/Bootstrap-tutorials/Bootstrap-Adding-Interactivity-Your-Site/122456-2.html", "course_title": "Bootstrap: Adding Interactivity to Your Site"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Easy-Digital-Downloads/122465-2.html", "course_title": "WordPress Ecommerce: Easy Digital Downloads"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Animated-Infographic-Edge-Animate/124091-2.html", "course_title": "Creating an Animated Infographic with Edge Animate"}, -{"course_link": "http://www.lynda.com/Developer-Databases-tutorials/Validating-Processing-Forms-JavaScript-PHP/120466-2.html", "course_title": "Validating and Processing Forms with JavaScript and PHP"}, -{"course_link": "http://www.lynda.com/WordPress-tutorials/WordPress-Ecommerce-Core-Concepts/122463-2.html", "course_title": "WordPress Ecommerce: Core Concepts"}, -{"course_link": "http://www.lynda.com/Backbonejs-tutorials/Up-Running-Backbonejs/120900-2.html", "course_title": "Up and Running with Backbone.js"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Creating-Interactive-Projects-Edge-Animate/124307-2.html", "course_title": "Creating Interactive Projects with Edge Animate"}, -{"course_link": "http://www.lynda.com/jQuery-tutorials/Create-Sortable-Photo-Gallery-jQuery/114897-2.html", "course_title": "Create a Sortable Photo Gallery with jQuery"}, -{"course_link": "http://www.lynda.com/JavaScript-tutorials/JavaScript-JSON/114901-2.html", "course_title": "JavaScript and JSON"}, -{"course_link": "http://www.lynda.com/Edge-Animate-tutorials/Create-Homepage-Marquee-Edge-Animate/114898-2.html", "course_title": "Create a Homepage Marquee with Edge Animate"}, -{"course_link": "http://www.lynda.com/Visual-Studio-Express-tutorials/Building-Windows-Store-Game-Using-HTML-JavaScript/114892-2.html", "course_title": "Building a Windows Store Game Using HTML and JavaScript"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/HTML5-Projects-Geolocation/118953-2.html", "course_title": "HTML5 Projects: Integrating Google Store Locator"}, -{"course_link": "http://www.lynda.com/ASP-NET-3-5-tutorials/asp-net-essential-training/784-2.html", "course_title": "ASP.NET Essential Training"}, -{"course_link": "http://www.lynda.com/Sublime-Text-tutorials/Up-Running-Sublime-Text-2/114325-2.html", "course_title": "Up and Running with Sublime Text 2"}, -{"course_link": "http://www.lynda.com/CSS-tutorials/CSS-Frameworks-Grids/112675-2.html", "course_title": "CSS: Frameworks and Grids"}, -{"course_link": "http://www.lynda.com/Developer-tutorials/JavaScript-and-AJAX/114900-2.html", "course_title": "JavaScript and AJAX"}, -{"course_link": "http://www.lynda.com/Facebook-tutorials/Building-Facebook-Applications-PHP-MySQL/107060-2.html", "course_title": "Building Facebook Applications with PHP and MySQL"}, -{"course_link": "http://www.lynda.com/Drupal-tutorials/Responsive-Design-Drupal/107419-2.html", "course_title": "Responsive Design with Drupal"}] \ No newline at end of file +[{"course_link": "/3D-Animation-Design-Techniques-tutorials/Power-PreViz-One-Co/98575-2.html", "course_title": "The Power of PreViz at One & Co"}, +{"course_link": "/3D-Animation-Design-Techniques-tutorials/Power-PreViz-One-Co/98575-2.html", "course_title": "Foundations of Typography"}, +{"course_link": "/Design-Typography-tutorials/Foundations-Typography/106698-2.html", "course_title": "Up and Running with Excel 2010"}, +{"course_link": "/Design-Typography-tutorials/Foundations-Typography/106698-2.html", "course_title": "Writing Fundamentals: The Craft of Story"}, +{"course_link": "/Excel-tutorials/Up-Running-Excel-2010/123569-2.html", "course_title": "Mixing a Short Film with Pro Tools"}, +{"course_link": "/Excel-tutorials/Up-Running-Excel-2010/123569-2.html", "course_title": "Office 2013 New Features"}, +{"course_link": "/Business-Business-Skills-tutorials/Writing-Fundamentals-Craft-Story/89962-2.html", "course_title": "Word 2013 Essential Training"}, +{"course_link": "/Business-Business-Skills-tutorials/Writing-Fundamentals-Craft-Story/89962-2.html", "course_title": "Excel 2013 Essential Training"}, +{"course_link": "/Pro-Tools-tutorials/Mixing-Short-Film-Pro-Tools/111780-2.html", "course_title": "Creating a Mail Merge in Word 2010"}, +{"course_link": "/Pro-Tools-tutorials/Mixing-Short-Film-Pro-Tools/111780-2.html", "course_title": "VFX Techniques: Tracking Objects onto a Face"}, +{"course_link": "/Office-tutorials/Office-2013-New-Features/84528-2.html", "course_title": "Design the Web: Clipping Masks"}, +{"course_link": "/Office-tutorials/Office-2013-New-Features/84528-2.html", "course_title": "Android SDK: Local Data Storage"}, +{"course_link": "/Office-tutorials/Word-2013-Essential-Training/115862-2.html", "course_title": "Foundations of Programming: Databases"}, +{"course_link": "/Office-tutorials/Word-2013-Essential-Training/115862-2.html", "course_title": "Photoshop CS6 Creative Cloud New Features Workshop"}, +{"course_link": "/Excel-tutorials/Excel-2013-Essential-Training/116478-2.html", "course_title": "Rendering Using Cycles in Blender"}, +{"course_link": "/Excel-tutorials/Excel-2013-Essential-Training/116478-2.html", "course_title": "Photoshop Elements 11 Essentials: 03 Sharing and Printing Photos"}, +{"course_link": "/Office-tutorials/Creating-Mail-Merge-Word-2010/123568-2.html", "course_title": "Audio Mastering Techniques"}, +{"course_link": "/Office-tutorials/Creating-Mail-Merge-Word-2010/123568-2.html", "course_title": "CSS: Frameworks and Grids"}, +{"course_link": "/After-Effects-tutorials/VFX-Techniques-Tracking-Objects-Onto-Face/114013-2.html", "course_title": "The Creative Spark: Brian Taylor, Handmade Photography"}, +{"course_link": "/After-Effects-tutorials/VFX-Techniques-Tracking-Objects-Onto-Face/114013-2.html", "course_title": "JavaScript and AJAX"}, +{"course_link": "/Photoshop-tutorials/Web-Design-Lab-Using-Clipping-Masks-Nondestructive-Cropping/114906-2.html", "course_title": "Up and Running with PowerPoint 2010"}, +{"course_link": "/Photoshop-tutorials/Web-Design-Lab-Using-Clipping-Masks-Nondestructive-Cropping/114906-2.html", "course_title": "Managing Small Projects"}, +{"course_link": "/Android-tutorials/Android-SDK-Local-Data-Storage/112584-2.html", "course_title": "After Effects Apprentice 16: Creating a Medical Opening Title"}, +{"course_link": "/Android-tutorials/Android-SDK-Local-Data-Storage/112584-2.html", "course_title": "Building Facebook Applications with PHP and MySQL"}, +{"course_link": "/Programming-tutorials/Foundations-Programming-Databases/112585-2.html", "course_title": "iOS SDK and SQLite: Building Data-Driven Apps"}, +{"course_link": "/Programming-tutorials/Foundations-Programming-Databases/112585-2.html", "course_title": "Photoshop CS6 New Features"}, +{"course_link": "/Photoshop-tutorials/Photoshop-CS6-Creative-Cloud-New-Features-Workshop/123564-2.html", "course_title": "VFX Techniques: Crowd Replication with After Effects"}, +{"course_link": "/Photoshop-tutorials/Photoshop-CS6-Creative-Cloud-New-Features-Workshop/123564-2.html", "course_title": "Aperture 3.3/3.4 New Features Overview"}, +{"course_link": "/Blender-tutorials/Photorealistic-Rendering-using-Cycles-Blender/117544-2.html", "course_title": "Responsive Design with Drupal"}, +{"course_link": "/Blender-tutorials/Photorealistic-Rendering-using-Cycles-Blender/117544-2.html", "course_title": "Up and Running with Windows 8"}, +{"course_link": "/Photoshop-Elements-tutorials/Photoshop-Elements-11-Essentials-03-Sharing-Printing-Photos/117104-2.html", "course_title": "Multilingual Publishing Strategies with InDesign"}, +{"course_link": "/Photoshop-Elements-tutorials/Photoshop-Elements-11-Essentials-03-Sharing-Printing-Photos/117104-2.html", "course_title": "Templating with Joomla! 3 and Bootstrap"}, +{"course_link": "/Mastering-tutorials/Audio-Mastering-Techniques/109358-2.html", "course_title": "ASP.NET MVC 4 Essential Training"}, +{"course_link": "/Mastering-tutorials/Audio-Mastering-Techniques/109358-2.html", "course_title": "Getting Started with Muse"}, +{"course_link": "/CSS-tutorials/CSS-Frameworks-Grids/112675-2.html", "course_title": "Photoshop Artist in Action: Tim Grey's Abandoned Farmhouse"}, +{"course_link": "/CSS-tutorials/CSS-Frameworks-Grids/112675-2.html", "course_title": "Photoshop Elements 11 Essentials: 01 Importing and Organizing Photos"}, +{"course_link": "/Photography-Documentaries-tutorials/Creative-Spark-Brian-Taylor-Handmade-Photography/101505-2.html", "course_title": "Digital Painting: Architecture"}, +{"course_link": "/Photography-Documentaries-tutorials/Creative-Spark-Brian-Taylor-Handmade-Photography/101505-2.html", "course_title": "Leading Productive Meetings"}, +{"course_link": "/Developer-tutorials/JavaScript-and-AJAX/114900-2.html", "course_title": "Discovering Your Strengths"}, +{"course_link": "/Developer-tutorials/JavaScript-and-AJAX/114900-2.html", "course_title": "Becoming a Thought Leader"}, +{"course_link": "/Office-tutorials/Up-Running-PowerPoint-2010/123567-2.html", "course_title": "Enhancing Your Productivity"}, +{"course_link": "/Office-tutorials/Up-Running-PowerPoint-2010/123567-2.html", "course_title": "Building Your Professional Network"}, +{"course_link": "/Business-Skills-tutorials/Managing-Small-Projects/105326-2.html", "course_title": "Thinking Like a Leader"}, +{"course_link": "/Business-Skills-tutorials/Managing-Small-Projects/105326-2.html", "course_title": "How to Use the lynda.com Partners Site"}, +{"course_link": "/After-Effects-tutorials/After-Effects-Apprentice-16-Creating-Medical-Opening-Title/79644-2.html", "course_title": "Developing Brand Identity Collateral"}, +{"course_link": "/After-Effects-tutorials/After-Effects-Apprentice-16-Creating-Medical-Opening-Title/79644-2.html", "course_title": "Photoshop Artist in Action: Tim Grey's Prayer Sticks"}, +{"course_link": "/Facebook-tutorials/Building-Facebook-Applications-PHP-MySQL/107060-2.html", "course_title": "Drawing Vector Graphics"}, +{"course_link": "/Facebook-tutorials/Building-Facebook-Applications-PHP-MySQL/107060-2.html", "course_title": "iPhone and iPod touch iOS 6 Essential Training"}, +{"course_link": "/Developer-tutorials/iOS-SDK-SQLite-Building-Data-Driven-Apps/107075-2.html", "course_title": "User Experience Fundamentals for Web Design"}, +{"course_link": "/Developer-tutorials/iOS-SDK-SQLite-Building-Data-Driven-Apps/107075-2.html", "course_title": "Photorealistic Lighting with Maya and Nuke"}] \ No newline at end of file diff --git a/try_scrapy/spiders/test_spider.py b/try_scrapy/spiders/test_spider.py index b7e9231..b995f69 100644 --- a/try_scrapy/spiders/test_spider.py +++ b/try_scrapy/spiders/test_spider.py @@ -1,30 +1,53 @@ from scrapy.spider import Spider from scrapy.selector import Selector +from scrapy.http import Request from try_scrapy.items import LyndaItem from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor +from scrapy.shell import inspect_response +import urlparse,urllib +base_url=r"http://www.lynda.com" class lynda_spider(CrawlSpider): name="get_lynda" # allowed_domains = ["dmoz.org"] - start_urls=[r"file:///C:/Users/b/Downloads/Learn%20Web%20Development%20with%20Video%20Courses%20and%20Tutorials%20from%20lynda.com.htm"] - rules = ( - Rule(SgmlLinkExtractor(attrs=["href","data-url"],allow=[r".*?page=\d+.*"])), - ) + start_urls=[base_url+"/allcourses"] + def parse(self,response): sel = Selector(response) - course_a=sel.xpath(r'//*[@class="course-list"]//li//*[@class="details-row"]/h3/a') - # print course_a.extract() + items=[] + + next_page =sel.xpath("//a[contains(@class,'see-more-results')]/@data-url").extract() + if next_page: + next_page=next_page[0] + + next_page=urlparse.urljoin(base_url,next_page) + parsed_url=urlparse.urlparse(next_page) + parsed_qs=urlparse.parse_qs(parsed_url.query) + parsed_qs.pop("ajax") + for tmp_qs in parsed_qs: + parsed_qs[tmp_qs]=parsed_qs[tmp_qs][0] + qs=urllib.urlencode(parsed_qs) + parsed_url=list(parsed_url) + parsed_url[-2]=qs + final_url=urlparse.urlunparse(parsed_url) + + print final_url + if int(parsed_qs["page"])<=10: + return Request(final_url, self.parse) + + sel = Selector(response) + course_a=sel.xpath(r'//*[@class="course-list"]//li//a') + print course_a.extract() titles=course_a.xpath("text()").extract() links=course_a.xpath("@href").extract() - items=[] - for i in range(len(course_a)): + for i in range(len(titles)): tmp_item=LyndaItem() tmp_item["course_title"]=titles[i].strip() tmp_item["course_link"]=links[i] items.append(tmp_item) - # print titles[i].strip() + print titles[i].strip() # print links[i] return items diff --git a/try_scrapy/spiders/test_spider.pyc b/try_scrapy/spiders/test_spider.pyc index e9db007e3de482b13ffd122cf629ae154297789a..a54e9a67a142f710282d122aa622c9a1a70ad81e 100644 GIT binary patch literal 2114 zcmbVNOK&4Z5Uw7-Uvb`S#AS())>#o-;)nu@*hLA_vWM|u#q36-iKml{x95@Rw&F+= zF5yS;D>(7bxFX=IZfC=a6WE@1ebv?VuAbWOgYGW}`E*9BPYwUac=WGWV*CUtqEt{I zNHF$Dd6d>Ds5x9CRj0H;LBruXsV1c@3R(^~NVO^LP|%^YOF`Fho1}V__9^H)+#)rg zbd7>Fhufrv6b!8gpw}r_rx;2$DDIN%(1oD5M?VwY6a5%$QrxELs1KKuzwj9eP^O7x zS|qV79d0w0O3qBa;We=zAm6kq2aYSYDLTjdH3?ozE5bhv^nKfo9VbtM{KqKu+gEaLno(Zz^CE{?Lj(j(tE+an>F68h~`7~c$$42`zmVZ zEX;Pv#eQ>B z57WGqhiJitGWyxU+2lBmOmw&?Rf1DwJ35+2%j8dtjzvXuDU&X@#ZxSk$@8~P-PilB ze-2fm&HmYBq7oR@JZMHP&FDZkKptO}^1}ABlMYQ{l(d7iVkk_@Xa}Oc9aKKFEFyDd zcp#yO$H?%w!p9;)!`cmid7fl;<2=$b1j7O=5?*VxAQ7gyyhSSz6?tLr0EnsN+ztdt zna%Q8+Aui^!(oEG$ebZQ2phhgeb(pLOqEfFfnotD@%i5x)TT_Fp{OWi7LRzYtbQ%k zg>~>@{Ow_I?YRV3jJ9572sz}OTW74n*apWlyn=|%ra3J*Q1%Xgynm5ok@}E|Re~cY z%z1ZN;f!m;*-orS271_m5jbQQ{TV1z-iCTsM#b$rcMIuv1{zjZ(zv+wKZO)udin?p ziN0uhJEAGN-liCeO)5kH{2$atTWn##OdI^z1@D7F zhRgZDUcEhB+gc?~o^N#5GJNYlW^rtb?0RMQQ4ddPnVhf8XrCkXxy8)>zlFGTtC`44 zJ=S>J_%?U^#&~e-N-E{s*BLwDvn`u8pQHU>d9rPCYf1w9}s~=;v^;$2{aKG3P=b{Tp1D@k=O=FF;(+QKgOyW!K4Wb zT)H9k3;u(N8xz;YFL7bw4|uClV|UlRb?&=P_1DRtV{`7WEA=lBq0zEzn%=n&umyazZ3c$tg=4`H`iyZF9rCdiXBJ&skeBfwtfqT$(umw3Mwqru=DA+U!Al_|K zETL;CxQRO3&vISR4|#}y}!IKj!?G5TagyS zOynBTabNdPy}*eJ)Z4{KDxq-4a*p!(NEfotQfukRB12VmU1}HEQcq{v9*$`(&y@CX z+moWBLfmks+2Tm1Z3lrJ*m}2dsgEc$KuG{kchXm*jB6x$x$lIC%S&i{v&~nwD&*>b!yIScc(dS!r*~<7EBSx jbc1