• 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.效果图展示

  • 相关阅读:
    Python 创建包含列表的元组
    Python 创建特殊元组tuple
    Bean named 'XXX' is expected to be of type [XXX] but was actually of type [com.sun.proxy.$Proxy7
    小米手机安装Google框架
    前端框架
    Microsoft Project项目管理工具
    Spring AOP无法拦截Controller的原因
    sql分页优化
    npm和Node.js简介
    启动OpenOffice服务
  • 原文地址:https://www.cnblogs.com/linsu/p/8628411.html
Copyright © 2020-2023  润新知