Python 使用“刮痕”插入刮痕项目的编号
我想得到刮条的总数和脚本运行的日期,并将其插入Mysql中,我将代码放入管道中,似乎数据的插入是在循环中,我可以将刮条完成时希望它放入的数据放在哪里 有什么想法吗?这是我的密码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
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本身连接到signalspider\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
方法中执行此操作,然后将其插入数据库中。