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
settings.py
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()
pipelines.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']
__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 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()
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
Partager