Djange搭建爬虫系统
Django是一个开放源代码的 Web 应用框架,由 Python 写成。许多成功的项目都使用了这个框架,采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。使用这个框架能够高效快捷的开发出这个系统。
前言
我们将在下面与大家分享如何搭建起一个django项目,以及编写招聘网站爬虫系统以及爬虫数据分析功能和下载数据。
一、如何安装django?
第一种方式:通过pip安装
$ python -m pip install Django 1
第二种方式:
yum install python-setuptools easy_install django 12
检验是否安装成功
[root@solar django]# python Python 3.7.4 (default, May 15 2014, 14:49:08) [GCC 4.8.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> django.VERSION (3, 0, 6, 'final', 0) 1234567
安装完毕!
二、建构项目
1.创建项目
$ django-admin startproject mysite 1
如果django-admin不起作用,可以参阅:https://docs.djangoproject.com/en/3.1/faq/troubleshooting/#troubleshooting-django-admin
项目如下(示例):
mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py 123456789
2.创建爬虫应用程序
现在,您的环境(一个“项目”)已设置好,您就可以开始工作了。
您在Django中编写的每个应用程序都包含一个遵循特定约定的Python包。Django附带了一个实用程序,该实用程序会自动生成应用程序的基本目录结构,因此您可以专注于编写代码,而不是创建目录。
$ python manage.py startapp polls 1
代码如下(示例):
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py 123456789
到这一步我们的目录的就已经创建完毕了。
进入到mysite目录:
我们尝试运行一下:python manage.py runserver 0.0.0.0:8000
效果如下:
看见有这个页面,安装大功告成
补充:
把数据库改成mysql数据库。
修改setting文件即可:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'NAME': 'movie', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 'root', } } 1234567891011
运行命令:
python manage.py migrate
这个时候就可以自动生成项目所需要的mysql数据表和数据字段。
3.安装自带的后台管理系统
在mysite里面的url文件改成以下。
创建超级管理员命令
$ python manage.py createsuperuser 1
创建超级密码
Username: admin 1
最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。
Password: ********** Password (again): ********* Superuser created successfully. 123
启动:
进入到mysite目录,运行
$ python manage.py runserver 1
4、打开浏览器,转到你本地域名的 “/admin/” 目录, – 比如 “http://127.0.0.1:8000/admin/” 。你应该会看见管理员登录界面:
我们安装一下:
pip install django-simpleui 1
完成搭建工作,刷新一下页面,一个全新的后台系统就呈现在我们的面前了,如下图所示:
至此,项目骨架就已经搭建完成。
4.搭建自定义的应用模块
1、运行命令:
python manage.py startapp polls 1
这个时候你就可以看见poll模块已经在我们的目录里面生成的了。
2、建立相关的表模型:
model.py
from django.db import models # Create your models here. # models.py from django.db import models class Test(models.Model): name = models.CharField(max_length=20) class Category(models.Model): # id = models.CharField(u'实例ID', max_length=32, blank=False, primary_key=True) name = models.CharField(u'岗位', max_length=50) add_time= models.CharField(u'添加时间', max_length=50) class Meta: verbose_name = '职位分类' verbose_name_plural = verbose_name def __str__(self): return self.name class Record(models.Model): # id = models.CharField(u'实例ID', max_length=32, blank=False, primary_key=True) record_name=models.CharField(u'记录名称', max_length=50) date=models.CharField(u'记录日期', max_length=50) recruit_type=models.CharField(u'记录类型', max_length=50) class Meta: verbose_name = '爬取记录' verbose_name_plural = verbose_name def __str__(self): return self.date class Liepin(models.Model): # id = models.CharField(u'实例ID', max_length=32, blank=False, primary_key=True) work=models.CharField(u'岗位',max_length=50) edu=models.CharField(u'教育背景',max_length=50) district=models.CharField(u'地区',max_length=50) compensation=models.CharField(u'薪酬',max_length=50) company=models.CharField(u'公司',max_length=50) year = models.CharField(u'工作年限', max_length=50) create_time = models.CharField(u'创建时间', max_length=50) work_type = models.ForeignKey(Category, on_delete=models.CASCADE,verbose_name='分类') record = models.ForeignKey(Record, on_delete=models.CASCADE, verbose_name='记录') salary = models.CharField(u'收入后一位', max_length=10) class Meta: verbose_name = '猎聘数据' verbose_name_plural = verbose_name class Qiancheng(models.Model): # id = models.CharField(u'实例ID', max_length=32, blank=False, primary_key=True) work = models.CharField(u'岗位', max_length=50) edu = models.CharField(u'教育背景', max_length=50) district = models.CharField(u'地区', max_length=50) compensation = models.CharField(u'薪酬', max_length=50) company = models.CharField(u'公司', max_length=50) year = models.CharField(u'工作年限', max_length=50) create_time = models.CharFiel