Это пример того, как писать Scipeline в проекте Django.
from <YOU_APP_NAME>.models import detikNewsItem
class DetikAppPipeline(object):
def process_item(self, item, spider):
d, created = detikNewsItem.objects.get_or_create(breadcrumbs=item['breadcrumbs'], url=item['url'])
if created:
d.tanggal = item['tanggal']
d.penulis = item['penulis']
d.judul = item['judul']
d.berita = item['berita']
d.tag = item['tag']
d.save()
return item
Кстати, вам нужно запустить Scrapy в среде Django.Есть несколько способов сделать это:
Использование модуля django-extensions
.Необходимо создать новый файл:
<DJANG_PROJECT>/scripts/__init__.py
<DJANG_PROJECT>/scripts/run_scrapy.py
С кодом внутри:
from scrapy.cmdline import execute
execute(['run_scrapy.py', 'crawl', 'detik'])
Другой способ - использовать Django Managment.Необходимо создать в проекте папки с файлом:
<folder_of_app>/management/commands/__init__.py
<folder_of_app>/management/commands/scrapy.py
scrapy.py
Файл должен содержать код:
из scrapy.cmdline Импорт выполнить
из django.core.management.base import BaseCommand
class Command (BaseCommand): help = 'Run scrapy.'
def add_arguments(self, parser):
parser.add_argument('arguments', nargs='+', type=str)
def handle(self, *args, **options):
args = []
args.append('scrapy.py')
args.extend(options['arguments'])
execute(args)
Позволяет запускать Scrapy в среде Django, напримерэто:
python manage.py scrapy crawl detik
python manage.py scrapy shell 'https://news.detik.com/indeks/all/?date=02/28/2018'