Python 使用“刮痕”插入刮痕项目的编号

Python 使用“刮痕”插入刮痕项目的编号,python,scrapy,web-crawler,Python,Scrapy,Web Crawler,我想得到刮条的总数和脚本运行的日期,并将其插入Mysql中,我将代码放入管道中,似乎数据的插入是在循环中,我可以将刮条完成时希望它放入的数据放在哪里 有什么想法吗?这是我的密码 import mysql.connector class GpdealsSpiderPipeline_hm(object): #some working code here def store_db(self, item): self.curr.execute("""insert into status_h

我想得到刮条的总数和脚本运行的日期,并将其插入Mysql中,我将代码放入管道中,似乎数据的插入是在循环中,我可以将刮条完成时希望它放入的数据放在哪里

有什么想法吗?这是我的密码

import mysql.connector

class GpdealsSpiderPipeline_hm(object):

#some working code here

def store_db(self, item):
    self.curr.execute("""insert into status_hm (script_lastrun, new_sale_item, no_item_added, total_item) values (%s, %s, %s, %s)""", (
            'sample output',
            'sample output',
            'sample output',
            'sample output',
        ))
    self.conn.commit()
错误: mysql.connector.errors.IntegrityError:1062(23000):键“PRIMARY”的重复条目“”

所以我可能把代码放错地方了。
请帮助,谢谢

Scrapy pipeline的目的是一次处理单个项目。但是,您可以通过在方法中加入逻辑来实现您想要的。您可以在键
item\u scraped\u count
下获取从Scrapy stats中刮取的项目总数。请参见示例:

class ExamplePipeline(object):
    def close_spider(self, spider):
        stats = spider.crawler.stats.get_stats()
        print('Total number of scraped items:', stats['item_scraped_count'])

    def process_item(self, item, spider):
        # logic to process the item
        return item
为了提供完整的信息,您还可以通过从管道、扩展或spider本身连接到signal
spider\u closed
来实现您的目标。请参阅连接到十字轴信号的完整示例:

import scrapy
from scrapy import signals

class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    start_urls = ['http://quotes.toscrape.com/']

    @classmethod
    def from_crawler(cls, crawler, *args, **kwargs):
        spider = super(QuotesSpider, cls).from_crawler(crawler, *args, **kwargs)
        crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed)
        return spider

    def spider_closed(self, spider):
        stats = spider.crawler.stats.get_stats()
        print('Total number of scraped items:', stats['item_scraped_count'])

    def parse(self, response):
        for quote in response.xpath('//div[@class="quote"]'):
            item = {
                'text': quote.xpath('./*[@itemprop="text"]/text()').extract_first()
            }
            yield item

您可以在scrapy提供的
close\u spider
方法中执行此操作,然后将其插入数据库中。