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