温馨提示×

python框架django爬虫怎么搭建

小樊
81
2024-12-12 05:57:51
栏目: 编程语言

搭建一个基于Django的爬虫框架涉及多个步骤,包括安装必要的库、创建项目结构、配置数据库、编写爬虫逻辑以及处理数据。以下是一个基本的步骤指南:

1. 安装必要的库

首先,确保你已经安装了Python和Django。然后,你需要安装一些用于爬虫的库,如requestsbeautifulsoup4scrapy

pip install django requests beautifulsoup4 scrapy

2. 创建Django项目

使用Django命令行工具创建一个新的项目。

django-admin startproject my_crawler
cd my_crawler

3. 创建Django应用

在项目中创建一个新的应用来处理爬虫逻辑。

python manage.py startapp crawler

4. 配置数据库(可选)

如果你需要存储爬取的数据,可以配置一个数据库。Django默认使用SQLite,但你也可以选择其他数据库如PostgreSQL或MySQL。

my_crawler/settings.py中配置数据库连接:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

5. 创建模型(可选)

如果你需要存储爬取的数据,可以创建一个Django模型。

crawler/models.py中定义模型:

from django.db import models

class CrawledItem(models.Model):
    title = models.CharField(max_length=200)
    url = models.URLField()
    content = models.TextField()

    def __str__(self):
        return self.title

6. 编写爬虫逻辑

crawler/spiders目录下创建一个新的爬虫文件,例如my_spider.py

import scrapy
from bs4 import BeautifulSoup
from my_crawler.models import CrawledItem

class MySpider(scrapy.Spider):
    name = 'my_spider'
    start_urls = ['http://example.com']

    def parse(self, response):
        soup = BeautifulSoup(response.text, 'html.parser')
        items = soup.find_all('div', class_='item')

        for item in items:
            title = item.find('h2').text
            url = item.find('a')['href']
            content = item.find('p').text

            crawled_item = CrawledItem(title=title, url=url, content=content)
            crawled_item.save()

7. 配置爬虫中间件(可选)

如果你需要处理请求头、重试等,可以配置爬虫中间件。

crawler/middlewares.py中定义中间件:

from scrapy import signals

class MySpiderMiddleware:
    def process_request(self, request, spider):
        request.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

    @classmethod
    def from_crawler(cls, crawler):
        middleware = cls()
        crawler.signals.connect(middleware.spider_opened, signal=signals.spider_opened)
        return middleware

    def spider_opened(self, spider):
        spider.logger.info('Spider opened: %s' % spider.name)

my_crawler/settings.py中配置中间件:

DOWNLOADER_MIDDLEWARES = {
    'my_crawler.middlewares.MySpiderMiddleware': 543,
}

8. 运行爬虫

在项目根目录下运行以下命令来启动爬虫:

python manage.py crawl my_spider

9. 处理数据(可选)

你可以将爬取的数据导出到文件或数据库中。例如,将数据导出到CSV文件:

import csv
from my_crawler.models import CrawledItem

def export_to_csv():
    items = CrawledItem.objects.all()
    with open('crawled_items.csv', 'w', newline='') as csvfile:
        fieldnames = ['title', 'url', 'content']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        for item in items:
            writer.writerow({
                'title': item.title,
                'url': item.url,
                'content': item.content,
            })

总结

以上步骤提供了一个基本的Django爬虫框架的搭建过程。你可以根据具体需求进一步扩展和优化这个框架,例如添加更多的爬虫、处理反爬虫机制、使用缓存等。

0