Bonjour,
Je sollicite l'aide des développeurs Python et qui connaisse le Framework "Scrapy" et aussi les autres.
Je suis nouveau dans le monde python et encore plus avec Scrapy.

Mon projet :
Récupérer tous les produits qui m'intéresse sur Cdiscount.

Ex:
Je voudrais récupérer tous les ordinateurs portables qui se trouve à cette URL.

http://www.cdiscount.com/informatiqu...l-1070922.html



j'ai analysé la structure HTML de la page, ce qui m'intéresse se trouve dans

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<div class="mainColumn Pl">
	<div class="boxSimple pad05em list" id="productList">
		<div class="plProductView" data-sku="F552CLSX236H">
			<div class="plViewZone_1">
				RAPATRIER Tous ce qui se trouve ici
			</div>
			<div class="plViewZone_2">
				RAPATRIER Tous ce qui se trouve ici
			</div>
		</div>
	</div>
</div>
Comme dit dans mon code j'aimerais rapatrier ce qui se trouve dans la "class = plViewZone_1" et "class = plViewZone_2"
Donc la marque du PC, l'image, la description, le nom ainsi que le lien vers la page qui se trouve dans un HREF avec le nom du PC et la balise "data-sku" qui se trouve dans la "class = plProductView".

Voici mon Crawler :

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
	from scrapy.contrib.spiders import CrawlSpider, Rule
	from scrapy.selector import Selector
	from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
	from enPromos.items import EnpromosItem
 
	class CDiscount(CrawlSpider):
		name = 'cdiscount'
		allowed_domains = ['cdiscount.com']
		start_urls = ['http://www.cdiscount.com']
 
		rules = (
			Rule (SgmlLinkExtractor(
				deny = (
					'\/about','\/maison\/','\/chaussures\/',
					'\/pret-a-porter\/','\/bijouterie\/',
					'\/bagages\/','\/le-sport\/','\/vin-champagne\/',
					'\/au-quotidien\/','\/juniors\/','\/dvd\/','\/livres-bd\/',
					'\/tout\/','\/carte-cdiscount\/','/mentions-legales.html',
					'\/culture-multimedia\/','/plan-du-site.asp')
					), callback='parse_item'),
		)
 
		def parse_item(self, response):
			self.log('la page est %s' % response.url)
			url_crawl = open('url.txt', 'a')
			url_crawl.write(str(response.url) + '\n')
			url_crawl.close()
			# my item
			my_item = EnpromosItem()
			# selector methode call
			sel = Selector(response)
 
			my_item['id'] = sel.xpath('//div[@class="plProductView"]/@data-sku').extract()
			my_item['name'] = sel.xpath('//a[@class="plPrName"]/@title').extract()
			my_item['descrip'] = sel.xpath('//span[@class="plPrDesc"]/@data-longdesc').extract()
			my_item['img'] = sel.xpath('//div[@class="plProductImg"]/img/@src').extract()
			my_item['brand'] = sel.xpath('//img[@class="plLogo"]/@src').extract()
 
			return my_item
Mon Item:
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
 
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
 
from scrapy.item import Item, Field
 
class EnpromosItem(Item):
    # define the fields for your item here like:
	id = Field()
	name = Field()
	descrip = Field()
	img = Field()
	brand = Field()
Mon code actuel fonctionne pour le "data-sku" mais pour le reste cela ne fonctionne pas. N'étant pas très à l'aise avec le XPATH je sollicite votre aide et vos lumières.

Cordialement,