Installation


In [ ]:
pip install scrapy

Installation base de données MongoDB


In [ ]:
pip install pymongo

Lancer un aspirateur de données


In [ ]:
scrapy startproject stackoverflow_data

Spécifier les données que nous allons récupérer


In [ ]:
from scrapy import Item

class StackOverFlowItems (Item):
    
    #Définir ce que nous allons récupérer depuis le site stackoverflow.com
    #name = scrapy.Field()
    
    titre = scrapy.Field()
    url = scrapy.Field()

Spécifier l'aspirateur qui va récupérer les données


In [ ]:
"""
Dans le dossier spiders
"""
from scrapy import Spider
from scrapy.selector import Selector
from stackoverflow_data.items import StackOverFlowItems

'''
Je définis la classe StackOverFlowSpier qui va récupèrer des données et les stockers dans les Items 
que j'ai définis précédement.
'''
class StackOverFlowSpider (Spider):
    # name définit le nom de l'aspirateur/crawler/spider 
    name = "stack"
    # allowed_domains contient les noms de domaines où le spider commence la récupération des données
    allowed_domains = ["stackoverflow.com"]
    # start_urls c'est l'adresse où le spider récupère les données.
    start_urls = ["http://stackoverflow.com/questions?sort=newest"]
    
    def parse (self, response):
        '''
        response c'est la réponse http à la requête http que nous avons lancé 
        sur le start_urls pour récupérer le code HTML de la page https://stackoverflow.com/questions.
        
        questions est une liste qui va récupérer les éléments h3 depuis la commande xpath.
        '''
        questions = Selector(response).xpath('//div[@class="summary"]/h3')
        
        for question in questions:
            item = StackOverFlowItems()
            
            item['titre'] = question.xpath('//a[@class="question-hyperlink"]/text()').extract()[0]
            item ['url'] = question.xpath('//a[@class="question-hyperlink"]/@href').extract()[0]
            
            # Yield est un return safe 
            
            yield item

Lancer le Spider que vous venez de créer


In [ ]:
scrapy crawl stack