我對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