sulin Python3.6爬虫+Djiago2.0+Mysql --实例demo

1.切换到项目目录下,启动测试服务器

  manage.py runserver 192.168.0.108:8888

2.设置相关配置 项目目录展示如下:

 

beauty=>settings.py 修改

 2.1 添加app到应用程序中

2.2 设置模板路径

2.3 配置数据为mysql

2.4设置静态文件路径

2.5设置漏油  

 3.beautyApp 代码

  3.1执行djiago命令生成数据库model 到beautyApp=>models.py

   

from django.db import models


class Grilsbase(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True)
    height = models.CharField(max_length=50, blank=True, null=True)
    bwh = models.CharField(max_length=50, blank=True, null=True)
    title = models.CharField(max_length=100, blank=True, null=True)
    img_upload = models.CharField(max_length=100, blank=True, null=True)
    pc_img_upload = models.CharField(max_length=100, blank=True, null=True)
    resource_id = models.CharField(max_length=50, blank=True, null=True)
    totals = models.CharField(max_length=50, blank=True, null=True)
    recommend_id = models.CharField(max_length=50, blank=True, null=True)
    date = models.CharField(max_length=50, blank=True, null=True)
    headimg_upload = models.CharField(max_length=100, blank=True, null=True)
    show_datetime = models.CharField(max_length=50, blank=True, null=True)
    client_show_datetime = models.CharField(max_length=50, blank=True, null=True)
    video_duration = models.CharField(max_length=50, blank=True, null=True)
    free_select = models.CharField(max_length=50, blank=True, null=True)
    trial_time = models.CharField(max_length=50, blank=True, null=True)
    viewtimes = models.CharField(max_length=50, blank=True, null=True)
    coop_customselect_654 = models.CharField(max_length=50, blank=True, null=True)
    coop_id = models.CharField(max_length=50, blank=True, null=True)
    tag_class = models.CharField(max_length=50, blank=True, null=True)
    tag_name = models.CharField(max_length=50, blank=True, null=True)
    playerid = models.CharField(max_length=50, blank=True, null=True)
    block_detailid = models.CharField(max_length=50, blank=True, null=True)
    type = models.CharField(max_length=50, blank=True, null=True)
    istop = models.CharField(max_length=50, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'grilsbase'

3.2 beautyApp =>views.py

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
from beautyApp.models import Grilsbase
from django.core import serializers 
import random

def index(request):
    rows=Grilsbase.objects.filter(type=1)[:20]
    return  render(request,'index.html',context={'rows':rows})

def detail(request,id):
    rows=Grilsbase.objects.get(block_detailid=id)
    srow=random.randint(10,80)
    rowsrandom=Grilsbase.objects.filter(type=1)[srow:srow+4]
    rowscout=Grilsbase.objects.filter(type=2).count()
    srowright=random.randint(0,rowscout)
    rowsright=Grilsbase.objects.filter(type=2)[srowright:srowright+1]
   
    return render(request,'detail.html',context={'totals':range(1,int(rows.totals)),'name':rows.name,'height':rows.height,
    'bwh':rows.bwh,'title':rows.title,'resource_id':rows.resource_id,'headimg_upload':rows.headimg_upload,'rowsrandom':rowsrandom,
    'rowsright': rowsright})
def ajax_page(request):
    page=request.GET["page"]
    srow=(int(page)-1)*20
    erow=int(page)*20
    rows=serializers.serialize("json",Grilsbase.objects.filter(type=1)[srow:erow])
    return JsonResponse(rows,safe=False)

 

3.3 创建模板 静态文件夹

base.html

 1 {% load static %}
 2 <!doctype html>
 3 <html lang="en">
 4  <head>
 5   <meta charset="UTF-8">
 6   <meta name="Author" content="">
 7   <meta name="Keywords" content="">
 8   <meta name="Description" content="">
 9   <title>{% block title %}美女频道{% endblock %}</title>
10   <link rel="stylesheet" rev="stylesheet" type="text/css" media="all" href="{% static '/css/newbase.css' %}">
11   <link rel="stylesheet" rev="stylesheet" type="text/css" media="all" href="{% static '/css/bugirl.css' %}">
12   <script src="{% static '/js/jquery.min.js' %}"></script>
13  </head>
14  <body class="y16" id="act_body_wapper">
15     <div class="wrapper-head wp-hd-white" id="">
16         <div class="vip-header modwp">
17             <h1 class="logo">
18                 <a class="viplogo" href="#" title="天天美图">天天美图</a>
19             </h1>
20             <div class="h_navin">
21                 <span class="ic_line" id="h_icline"></span>
22                 <ul class="menu" id="h_navlist">
23                     <li><a title="视频" href="/index" class="mid_link">&nbsp;<span class="hot_ico"></span></a></li>
24 
25                     <li class="cur"><a href="/index" class="mid_link">&nbsp;</a></li>
26                     <li><a href="/index" class="mid_link">&nbsp;</a></li>
27                 </ul>
28             </div>
29 
30         </div>
31     </div> 
32 {% block content %}
33 <div>这里是默认内容,所有继承自这个模板的,如果不覆盖就显示这里的默认内容。</div>
34 {% endblock %}
35 <div class="vip-footer">
36         <div class="sys_footer">
37             <div class="foot">
38                 <p class="links">
39 
40                     <a target="_blank" href="" title="商务合作">商务合作</a><span>|</span>
41                     <a target="_blank" href="" title="客服中心">客服中心</a><span>|</span>
42                     <a target="_blank" href="" title="安全中心">安全中心</a><span>|</span>
43                     <a target="_blank" href="" title="用户协议">用户协议</a>
44                 </p>
45                 <p>
46                     <a target="_blank" href="#">信息网络传播视听节目许可证1908323号</a>
47                     <a target="_blank" href="#">增值电信业务经营许可证粤B2-20050219号</a>
48                     <a target="_blank" href="#">网络文化经营许可证文网文[2010]163号</a> 粤ICP备10240715号
49                 </p>
50                 <p>© 2003-2018  版权所有</p>
51             </div>
52         </div>
53     </div>
54 </body>
55 </html>

index.html

{% extends 'base.html' %}
{% block title %}美女专题{% endblock %}
{% block content %}
{% load static %}

<div class="bugirl_wp">
        <div class="bugirl_cont">
            <!--专辑内容-->
            <div class="tab_area album">
                <div class="list_wp modwp">
                    <div class="list_row" id="waterfall">
                    {% for i in rows %}
                     <div class="girl_wp img_wp">
                            <span class="mark_update"><i class="ico_update"></i>最新专辑</span><img class="img_girl" src="{% static i.resource_id %}/{{ i.img_upload }}" alt="{{i.title}}">
                            <div class="describe">
                                <div class="txt_wp">
                                    <p class="tit">{{i.title}}</p><p class="date">{{i.date}}</p><span class="mark_free">
                                        <i class="ico_see"></i> <span>免费试看</span> <i class="mark_bg"></i>
                                    </span><span class="mark_vipgq" style="display:none">高清</span>
                                </div>
                                <div class="mask"></div>
                            </div><a href="{% url 'detail' %}/{{ i.block_detailid }}" class="mask_click">点击查看</a>
                        </div>
                    {% endfor %}
                    </div>
                </div>
            </div>
        </div>
        </div>
         <script>
         
        var isStop = 0;//触发开关 

        function ajaxData(page) {

            $.ajax({
             url:'/ajax_page',    
             type:'get',
             data:{'page':page},
             dataType:'json',
             success:function(data){
               var html = '';
               var json=JSON.parse(data);
                   $.each(json,function(k,v){
                        html+= ' <div class="girl_wp img_wp">'
                        + ' <img class="img_girl" src="{% static '' %}'+v.fields.resource_id+'/'+v.fields.img_upload+'" alt="'+v.fields.title+'">'
                        + ' <div class="describe">'
                        + '   <div class="txt_wp">'
                        + '     <p class="tit">'+v.fields.title+'</p><p class="date">'+v.fields.date+'</p><span class="mark_free">'
                        + ' <i class="ico_see"></i> <span>免费试看</span> <i class="mark_bg"></i>'
                        +' </span><span class="mark_vipgq" style="display:none">高清</span>'
                        + ' </div>'
                        + '<div class="mask"></div>'
                        + "</div><a href="{% url 'detail' %}/"+v.fields.block_detailid+"" class="mask_click">点击查看</a>"
                        + '</div>';
                   });
                isStop = 0;
                $("#waterfall").append(html);
             }
            });
        }
        $(function () {
            var curpage = 1;//定义一个全局变量page  
            $(window).scroll(function () {

                // 当滚动到最底部加载新内容  
                if ($(document).height() - $(this).scrollTop() - $(this).height() < 100) {
                    if (!isStop) {
                        isStop = 1;
                        curpage++;
                        ajaxData(curpage);
                    }

                }
            });
        });
    </script>
{% endblock %}

detail.html

{% extends 'base.html' %}
{% block title %}{{title}}{% endblock %}
{% block content %}
{% load static %}
<div class="wrapper pb0 zjxq_page">
  <div class="play_area_wp">
    <div class="modwp">
      <p class="crumb"><a href="/index">首页</a>&nbsp;&gt;&nbsp;<a href="/index">专辑</a>&nbsp;&gt;&nbsp;<a href="#" class="title">{{title}}</a></p>
      <div class="play_area">
        <div class="play_box_wp fl">
          <div class="guide_num"><span class="now">1</span>/<span class="total totals">_</span></div>
  <div class="play_box">
            <div class="vip_tag" style="display:none">会员专享</div>
            <div class="free_tag">免费试看<span><em class="now"></em></span></div>
            <!--轮播图-->
            <div class="img_wp">
              <div class="img_list" id="wrapper1" n="0">
                <ul class="imgbox" style=" 33450px; transition-timing-function: cubic-bezier(0.1, 0.57, 0.1, 1); transition-duration: 0ms; 
                 transform: translate(-720px, 0px) translateZ(0px);">
                  {% for i in  totals %}
                        
                        <li>
                        <img class="portrait" src="{% static resource_id %}/{{ i }}.jpg" data-src="{% static resource_id %}/{{ i}}.jpg" alt="">
                        </li>
                  {% endfor %}
                 </ul>
                <!-- 免费观看 开通会员查看更多 -->
                <div class="tip_free" id="detailview" style="display:none;">
                  <div class="cont">
                    <span class="content">登陆后可观看更多</span>
                  </div>
                  <a href="javascript:;" class="close" title="关闭">关闭</a>
                </div>
              </div>
              <!-- 缩略图 -->
              <div class="thumbnail_list">
                <div class="thumbnail_cont">
                  <ul id="thumbnail" style="margin-left: 0px;">
    
         
        {% for i in  totals %}
            <li>
            <a href="javascript:;">
            <img src="{% static resource_id %}/{{ i }}.jpg" data-src="{% static resource_id %}/{{ i }}.jpg" width="134" height="87">
            
            </a>
            </li>
                    
        {% endfor %}
        <!--<li>
          <a href="javascript:;">
            <img src="http://meitu.xunlei.com/img-y16/bugirl/loading.gif" data-src="http://data.meitu.xunlei.com/data/image/yangpei0818/34.jpg" width="134" height="87">
            <span class="mask_lock vip"><em>会员解锁</em></span>
          </a>
        </li>-->
</ul>
                </div>
              </div>
            </div>
            <!--轮播图结束-->
            <div class="arrow_wp">
              <a href="javascript:;" class="arrow_left arrow_left1" title="左翻">左翻</a>
              <a href="javascript:;" class="arrow_right arrow_right1" title="右翻">右翻</a>
            </div>

           
            <!--为你推荐-->
            <div class="pop_pause pop_recommend" id="standmode" style="display:none;">
              <div class="pos_rel">
                <div class="pop_hd">
                  <p class="pop_tit">为你推荐</p>
                  <a href="#" class="pop_refresh">换一个</a>
                </div>
              </div>
              <a href="javascript:;" class="u_close" title="关闭">关闭</a>
              <div class="mask"></div>
            </div>
          </div>
        </div>
        <div class="info_wp fr">
          <div class="info">
            <div class="img_wp"><img class="headimg_upload" src="{% static resource_id %}/{{ headimg_upload }}" alt="美女头像"></div>
            <div class="txt_wp">
              <p class="uname name">{{ name }}</p>
              <p>身高/<span class="height">{{ height }}</span>cm</p>
              <p>三围/<span class="bwh">{{ bwh }}</span></p>
            </div>
            <div class="vip_paybox">
              <a href="javascript:;" class="btn_pay down"  ><i class="ico_down"></i>会员高清下载</a>
              <p class="txt">会员尊享高清原画品质,美丽纤毫可见</p>
             
            </div>
          </div>
          <div class="video_list" id="videobox">
            <div class="hd">
              <h2><span>推荐视频</span></h2>
            </div>
            
          <div class="girl_wp video_wp">
            {% for right in rowsright %}
            <div class="img_girl">
              <img src="{% static right.resource_id %}/{{ right.img_upload }}" alt="">
              <i class="ico_play"></i>
            </div>
            <div class="describe">
              <div class="txt_wp"><p class="tit">{{right.title}}拍摄花絮</p></div>
            </div>
            {% endfor %}
          </div>
        </div>
      </div>
      </div>
    </div>
  </div>

  <div class="detail_wp">
    <div class="hd modwp">
      <h3>推荐专辑</h3>
    </div>
    <!--专辑内容-->
    <div class="album">
      <div class="list_wp modwp">
        <div class="list_row" id="listzj">
       {% for ri in  rowsrandom %}
        <div class="girl_wp img_wp">
        <img class="img_girl" src="{% static ri.resource_id %}/{{ ri.img_upload }}" alt="{{ri.title}}">
        <div class="describe">
        <div class="txt_wp"><p class="tit">{{ri.title}}</p><p class="date">{{ri.date}}</p></div>
        </div>
        <a href="{% url 'detail' %}/{{ ri.block_detailid }}"  target="_blank" class="mask_click" >点击查看</a>
        </div>
        {% endfor %}
      </div>
    </div>
   
  </div>
</div><!-- wrapper end -->

<!--全屏图片-->
<div class="full_screen" style="visibility:hidden;">
  <div class="play_box modwp">
    <!--轮播图-->
    <div class="img_wp">
      <div class="img_list" id="wrapper2" data-num=''>
       <ul class="imgbox2" >
            <li>
                <img class="portrait" src="{% static 'loadingthum.gif' %}"  alt="" />
            </li>
        </ul>
      </div>
    </div>
    <!--轮播图结束-->
    <div class="arrow_wp">
      <a href="javascript:;" class="arrow_left arrow_left2" title="左翻">左翻</a>
      <a href="javascript:;" class="arrow_right arrow_right2" title="右翻">右翻</a>
    </div>
    <div class="btn_wp">
      <a href="javascript:;" class="close" title="关闭">关闭</a>
    </div>
  </div>
</div>
<script src="{% static '/js/detail.js' %}" defer="defer" ></script>
{% endblock %}

4.效果图展示

原文地址:https://www.cnblogs.com/linsu/p/8628411.html