Je construis cette araignée en scrapy, python 3.0. Le problème est que chaque fois que j'utilise des règles, cela donne une erreur "syntaxe invalide" pour def parse_productPage. Lorsque je supprime les règles, il ne se plaint pas et fonctionne bien. Je ne peux pas trouver ce qui ne va pas avec le code. Pouvez-vous m'aider s'il vous plaît. Voici le codeQuand j'utilise des règles dans Scrapy Spider Il donne une erreur de syntaxe invalide pour la fonction suivante
import scrapy
from quo.items import QuoItem
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class ISpider(CrawlSpider):
name='iShopE'
allowed_domains = ['ishopping.pk']
start_urls = ['https://www.ishopping.pk/electronics/home-theatres.html']
rules = (
Rule(LinkExtractor(restrict_xpaths=('//div["category-products-"]'), follow=True),
Rule(LinkExtractor(restrict_xpaths=('//h2[@class="product-name"]/a/@href'), callback='parse_productPage'),
)
def parse_productPage(self,response):
for rev in response.xpath('//div["product-essential"]'):
item=QuoItem()
price=response.xpath('//div[@class="price-box"]/span[@class="regular-price"]/meta[@itemprop="price"]/@content').extract()
if price:
item['price']=price
Availability=response.xpath('//p[@class="availability in-stock"]/span[@class="value"]/text()').extract()
if Availability:
item['Availability']=Availability
Brand=response.xpath('(//div[@class="box-p-attr"]/span)[1]/text()').extract()
if Brand:
item['Brand']=Brand
deliveryTime=response.xpath('(//div[@class="box-p-attr"]/span)[2]/text()').extract()
if deliveryTime:
item['deliveryTime']=deliveryTime
Waranty=response.xpath('(//div[@class="box-p-attr"]/span)[3]/text()').extract()
if Waranty:
item['Waranty']=Waranty
yield item
Voici le journal de sortie Output log