温馨提示×

python框架django爬虫如何与Django集成

小樊
114
2024-12-12 05:27:51
栏目: 编程语言

要将Python爬虫与Django集成,您可以按照以下步骤操作:

  1. 创建一个新的Django项目(如果尚未创建):
django-admin startproject myproject cd myproject 
  1. 创建一个新的Django应用:
python manage.py startapp myapp 
  1. myapp目录下创建一个名为spiders的文件夹,用于存放爬虫代码。

  2. spiders文件夹中创建一个爬虫类,例如myspider.py。在这个类中,定义您的爬虫逻辑,如下所示:

import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): item = MyItem() # 提取所需数据并将其存储在item对象中 item['title'] = response.css('h1::text').get() yield item 
  1. myapp/models.py中定义一个用于存储爬取到的数据的模型,例如:
from django.db import models class MyItem(models.Model): title = models.CharField(max_length=200) 
  1. myapp/admin.py中注册模型,以便在Django管理界面中查看和管理爬取到的数据:
from django.contrib import admin from .models import MyItem admin.site.register(MyItem) 
  1. myproject/settings.py中添加myappINSTALLED_APPS列表:
INSTALLED_APPS = [ # ... 'myapp', ] 
  1. 创建数据库迁移文件并应用迁移:
python manage.py makemigrations python manage.py migrate 
  1. myproject/urls.py中添加一个URL模式,以便将爬虫的输出(例如CSV文件)保存到Django项目中的文件系统:
from django.urls import path from myapp.views import save_spider_output urlpatterns = [ # ... path('save_spider_output/', save_spider_output, name='save_spider_output'), ] 
  1. myapp/views.py中创建一个视图函数,用于处理爬虫输出的保存:
import os from django.http import HttpResponse from .models import MyItem def save_spider_output(request): output_file = 'spider_output.csv' with open(output_file, 'w', newline='', encoding='utf-8') as csvfile: fieldnames = MyItem._meta.fields.keys() writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() items = MyItem.objects.all() for item in items: row = { 'title': item.title, } writer.writerow(row) return HttpResponse(f'Spider output saved to {output_file}') 
  1. myapp/urls.py中添加一个URL模式,以便访问保存的爬虫输出文件:
from django.urls import path from .views import save_spider_output, serve_file urlpatterns = [ # ... path('save_spider_output/', save_spider_output, name='save_spider_output'), path('spider_output/<str:filename>/', serve_file, name='serve_file'), ] 
  1. myapp/views.py中创建一个视图函数,用于提供爬虫输出的下载:
from django.http import FileResponse from django.conf import settings from .models import MyItem def serve_file(request, filename): file_path = os.path.join(settings.MEDIA_ROOT, filename) if os.path.exists(file_path): return FileResponse(open(file_path, 'rb'), content_type='text/csv') else: return HttpResponse('File not found', status=404) 
  1. myproject/urls.py中包含myapp的URL配置:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('myapp.urls')), ] 
  1. 创建一个Scrapy项目并将爬虫添加到该项目中。然后,您可以使用scrapy crawl myspider命令运行爬虫。爬取到的数据将存储在Django数据库中,并可以通过访问/save_spider_output/ URL来保存到CSV文件。

  2. 如果需要,您可以在Django管理界面中查看和管理爬取到的数据。

通过以上步骤,您可以将Python爬虫与Django集成,实现数据的爬取、存储和管理。

0