In [ ]:
pip install scrapy
Installation base de données MongoDB
In [ ]:
pip install pymongo
In [ ]:
scrapy startproject stackoverflow_data
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()
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
In [ ]:
scrapy crawl stack