Skip to content

Latest commit

 

History

History
277 lines (185 loc) · 9.58 KB

13-第十三周-如何利用爬取的数据.md

File metadata and controls

277 lines (185 loc) · 9.58 KB

专栏第十三周 如何利用爬取的数据

我们通过各种方式辛辛苦苦的获取到了数据,那么接下来呢?还需要做些什么。

  • 可以用获取到的图片做机器学习的训练数据
  • 可以用获取的商品,招聘等信息做数据分析,看看什么卖的好,什么职位工资高。
  • 可以用获取到的数据搭建自己的网站。比如各种搜索网站。

关于机器学习,数据分析大家可以查看一下我们其他的专栏文章。

今天,就带着大家一起看看如何用Django快速搭建一个前后台齐全的网站。

搭建环境

  • 在工作目录下创建一个Pyweb的文件夹,用来保存代码。当然,这个目录的名字你可以任意取,但不要有中文和特殊符号

  • 在Pyweb文件夹下面创建一个env的文件夹,这个文件夹就是虚拟机的名,通过如下命令创建虚拟机。

    cd env
    python -m venv .

    注意venv和 . 之间有一个空格。

    这里演示的是在Windows系统下的创建方式,其他操作系统大家自行搜索一下。ls可以换成dir

    image-20191026224553401

  • 激活虚拟环境

    Scripts\activate

    image-20191026224709438

    激活成功后,会看到在命令行前面会多出一些内容。

    输入deactivate可以退出虚拟环境。

  • 安装Django库

    在虚拟环境下输入如下命令,安装Django框架

    pip install django

    如果速度慢的话,可以换成国内的源

    pip install django -i https://pypi.mirrors.ustc.edu.cn/simple/

    image-20191026225204779

这样环境就创建好了,接下来创建我们的网站。下面的所有操作都是在虚拟机内完成的。

创建网站

  • 为了方便代码管理,回到Pyweb目录下,通过如下命令来创建一个叫做mysite的DJnago网站。

    django-admin startproject mysite

    image-20191026225551121

可以看到会自动生成一个mysite的目录,里面的目录结构如下:

image-20191026225959992

  • 工程创建好后,再创建一个应用movie:

    python manage.py startapp movie

    创建成功后的目录结构如下:

    image-20191026230235017

  • 应用创建好之后我们要将它添加到这个工程之中,修改settings.py文件

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'movie', # 新加的应用
    ]
  • 应用添加好之后,还要为这个应用创建一个数据库表,用来保存爬取或者要展示的内容。修改movie目录下的models.py

    from django.db import models
    
    # Create your models here.
    class Movie(models.Model):
        name = models.CharField(max_length=50, verbose_name='电影名')
        url = models.URLField(verbose_name='电影路径', max_length=200)
        desc = models.TextField(verbose_name='电影描述')
    
        def __str__(self):
            return self.name
        
        class Meta:
            verbose_name = '电影信息'
            verbose_name_plural = '电影信息'

    为这个应该添加了3个字段,并且定义了它在后台的名称为“电影信息”

  • 将这个应用添加到后台,方便之后的管理。修改admin.py

    from django.contrib import admin
    from .models import Movie
    
    # Register your models here.
    admin.site.register(Movie)

    完成这些后,还差最后一步,创建数据库和管理员信息。

    • 同步数据

       python manage.py makemigrations

      image-20191026231439674

    python manage.py migrate

    image-20191026231525926

    发现除了我们定义的应用的表,还有很多其他的,这些都是Djnago框架自带的表。暂时不用太在意。

    • 创建管理员账号

       python manage.py createsuperuser

      image-20191026231748209

    这里输入完命令后,按照提示一步一步的输入就好。

  • 启动网站

    python manage.py runserver

    image-20191026231937842

    启动成功后,在浏览器中输入红框中的网址,将看到如下画面。表示这个网站已经创建成功了。

    image-20191026232056812

我们进入后台看看,在url后面输入**/admin**看到如下画面:

image-20191026232214264

输入我们刚才创建好的管理员用户和密码:

image-20191026232312105

可以看到这个应用出现在了后台,可以点击右边的add来添加几条数据。

image-20191026232535573

image-20191026232551493

我这里是手动填写的,大家可以通过爬虫获取到数据,自动添加数据。另外这里用的是sqlite数据库。关于这个数据库,大家可以上网查一下用法。不明白的地方欢迎大家进群讨论。

现在数据有了,该如何显示呢?

显示数据

  • 创建用于显示数据的模板

    创建一个templates的文件夹,用来保存html模板,创建好的目录结构:

    image-20191026232936265

创建好了文件夹,要将它添加到工程中,并告诉程序这个是保存页面模板的,修改settings.py文件:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')], # 修改的地方
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  • 创建业务逻辑,修改movie文件夹下的views.py文件

    from django.shortcuts import render
    from .models import Movie
    
    # Create your views here.
    def Index(request):
        movie_list = Movie.objects.all() # 查询所有数据
        return render(request, 'index.html', {'movie_list':movie_list})

    index.html是稍后要创建的html文件,用来显示数据的。

    {'movie_list':movie_list}是告诉页面都显示什么数据,这里将获取到的所有电影信息都显示在页面上。

  • 告诉项目,我们访问什么路径,来显示电影信息,修改和settings.py同级目录下的urls.py文件

    from django.contrib import admin
    from django.urls import path
    from movie.views import Index
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('info/', Index, name='info'),
    ]
  • 在templates文件夹下创建html文件

    <html>
        <head>
            <title>电影信息</title>
        </head>
        <body>
            <ul>
                {% for movie in movie_list %}
                    <li>
                        <a href="{{movie.url}}" target="blank">{{movie.name}}</a>
                    </li>
                {% endfor %}
            </ul>
        </body>
    </html>

    这里的{%%}等内容是Django的模板语言,大家可以看看官方文档,这里就不详细说明了。

    访问: http://127.0.0.1:8000/info/

    image-20191026234438718

这样我们的信息就显示在了页面上了。

我们这里只是简单的介绍了一下Django框架的入门用法,如果大家要深入学习的话,可以买一些书来看。或者关注公众号,后续可能会有相关的内容哦。如果有什么疑问,欢迎大家来群里讨论。

最后的话

感谢大家对本专栏的支持,这是我第一次写专栏内容,有很多不足的方法希望大家见谅。同时也正是因为大家的支持,才能使我坚持把这个专栏完成。

我们的专栏目的是让大家对爬虫有个初步的认识。如果想真正在公司或面试中做到出类拔萃,还需要大家多多练习,同时也希望大家持续关注我们,后续我们还会推出更有意思,更有价值的内容。我们不见不散。