我对scrapy工作,被刮取的网站,并获取所有如何动态创建一个CSV文件与scrapy蟒蛇蜘蛛名
其实我有3个蜘蛛不同的数据信息,我创造了这3个蜘蛛同一文件夹 结构如下
scrapy.cfg
myproject/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
spider1.py
spider2.py
spider3.py
现在,当我们运行特定的蜘蛛,我需要创建通过与蜘蛛的名字管道csv文件,例如
spider1.csv,spider2.csv,spider3.csv and so on
(S根据蜘蛛和蜘蛛名称的数量我想创建csv文件
在这里,我们是否可以在pipeline.py中创建多个管道?也如何动态创建蜘蛛名称的csv文件如果不止一个蜘蛛存在
在这里我有3个蜘蛛,我想一次运行所有3个蜘蛛(通过使用scrapyd),当我运行所有3个蜘蛛应该创建3个带有蜘蛛名字的csv文件。 我想安排这个蜘蛛每6小时运行一次。 如果我的解释中有什么错误,请纠正我,让我知道如何做到这一点。
在此先感谢
编辑代码: 比如我贴我的代码只spider1.py
代码spider1.py:
class firstspider(BaseSpider):
name = "spider1"
domain_name = "www.example.com"
start_urls = [
"www.example.com/headers/page-value"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
........
.......
item = Spider1Item()
item['field1'] = some_result
item['field2'] = some_result
.....
.....
return item
管道.py代码:
import csv
from csv import DictWriter
class firstspider_pipeline(object):
def __init__(self):
self.brandCategoryCsv = csv.writer(open('../%s.csv' % (spider.name), 'wb'),
delimiter=',', quoting=csv.QUOTE_MINIMAL)
self.brandCategoryCsv.writerow(['field1', 'field2','field3','field4'])
def process_item(self, item, spider):
self.brandCategoryCsv.writerow([item['field1'],
item['field2'],
item['field3'],
item['field4'])
return item
至于我,当我运行与蜘蛛名以上蜘蛛如前所述,与蜘蛛名CSV文件将被动态地创建..... 但现在当我办剩下的蜘蛛像spider2,spider3,spider3
下,CSV文件及其相应的蜘蛛名称应该生成。
上述代码是否足以满足上述功能?
我们是否需要创建另一个管道类来创建另一个csv文件?(是否有可能在一个单一的pipeline.py文件创建多个管道类?)
如果我们创建多个管道类在一个pipeline.py文件,如何在特定的蜘蛛匹配其相关管道类
我想保存到数据库时,实现相同的功能,我的意思是,当我运行spider1 spider1的所有数据应保存到数据库到具有相关蜘蛛名称的表格中。 这里每个蜘蛛我有不同的SQL查询(所以需要编写不同的管道类)
- 这里的内涵是,当我们同时运行多个蜘蛛所有(使用scrapyd),多个CSV文件应与蜘蛛产生名称和多个表应与蜘蛛名称创建(当保存到数据库)
对不起,如果我错了任何地方,我希望它很好的解释,如果没有请让我知道。
向我们展示一些代码,你已经尝试过了什么?或者向我们展示至少您对于您所想到的界面/ API的想法。 – 2012-07-05 13:00:24
@Don问题:我已经更新了我的代码,请解释我该怎么做 – 2012-07-06 06:00:04