Bonjour
Je suis débutant en python et ai un problème de compréhension avec l'insertion de données en base.
Mon objectif est d'insérer l'intégralité des liens trouvé sur un site dans une base cependant impossible d'insérer toutes les urls en base à chaque fois je n'insère qu'une ligne
Surement une incompréhension de ma part sur le fonctionnement de scrapy mais j'ai besoin d'un coup de main pour mieux comprendre
Vous trouverez ci-dessous les différents fichiers avec lesquels je travail
D'avance merci

itemp.spy
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
from scrapy.item import Item, Field
class TutorialItem(Item):
    pass
class DmozItem(Item):
    link = Field()
settings.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
BOT_NAME = 'tutorial'
SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'
ITEM_PIPELINES = ['tutorial.pipelines.MySQLPipeline']
pipelines.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
class MySQLPipeline(object):
    def __init__(self):
        import MySQLdb
        self.db = MySQLdb.connect(host="localhost", user="root", passwd="", db="crawler_engine")
 
    def process_item(self, item, spider):
        cursor = self.db.cursor()
        sql = "insert into urls(url, domain, num_crawl) values ('%s','%s','%s')" % (item['link'][0],'probikeshop', 1)
        cursor.execute(sql)
        return item
 
    def spider_closed(self, spider):
        self.db.commit()
__init__.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
from scrapy.spider import BaseSpider
from scrapy.selector import Selector
from tutorial.items import DmozItem
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import CrawlSpider
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
class Dmozv0Spider(BaseSpider):
    name = "dmozv0"
    allowed_domains = ["python.org"]
    start_urls = ["http://www.python.org/"]
 
    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        item = DmozItem()
        item['link'] = hxs.select('//div/ul/li/a/@href').extract()
        return item