Я работаю над скраппингом, очистил сайт и получил всю информацию
На самом деле у меня было 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
(Пауки не ограничены, их может быть больше)> В соответствии с количеством пауков и именами пауков я хочу создать файлы csv
Здесь, можем ли мы создать более одного конвейера в pipe.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
Код Pipeline.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-файла? (Возможно ли создать более одного класса конвейера в одном файле pipe.py?)
Если мы создадим несколько классов конвейера в одном файле pipe.py, как сопоставить конкретного паука с соответствующим классом конвейера
Я хочу добиться той же функциональности при сохранении в базу данных, я имею в виду, что когда я запускаю паука1, все данные паука1 должны сохраняться в базе данных в таблицу с относительным именем паука. Здесь для каждого паука у меня были разные запросы sql (поэтому нужно писать разные классы конвейера)
- Здесь намерение заключается в том, что когда мы запускаем несколько пауков одновременно (используя scrapyd), несколько файлов csv должны генерироваться с их именами пауков, а несколько таблиц должны создаваться с именами пауков (при сохранении в базу данных).
Извините, если я где-то ошибаюсь, я надеюсь, что это хорошо объяснено, а если нет, пожалуйста, дайте мне знать.