zoukankan      html  css  js  c++  java
  • 轮播组件/瀑布流/组合搜索/KindEditor插件

    一、企业官网

    瀑布流

    ​ Models.Student.objects.all() #获取所有学员信息

    ​ 通过div进行循环图片和字幕

    ​ 1.以template模板方法实现瀑布流以列为单位放置图片和字母信息:通过取余的方式分列,三列就对三取余,在templatetags里面自定义模板,但是对于前端创建的判断方法if,时不能使用@register.simple_tag,simple_tag方法不能用于if 后,所以引用filter方法:@register.filter

    ​ 2.以JS的方式实现瀑布流以列为单位放置图片和字母信息:通过JS进行求余运算实现瀑布流

    轮播图:

    轮播图bxlider插件:依赖于Jquery

    组合搜索

    ​ 目的是信息的查询过滤

    ​ models.Video.objects.filter() # 查询:使用字典进行组合查询,在前端通过类型id实现动态组合索引,最简单的组合查询方法,数据类型无关联

    示例:sparta(学习示例,非本人所写,就不发链接了)

    ​ 安装python2.7

    ​ pip2 install django==1.7.8

    ​ pip2 install Pillow

    二、博客系统

    ​ 个人博客注册

    ​ 个人主页

    ​ 个人后台管理

    ​ 主题定制

    ​ Editor(回存在XSS攻击)

    ​ TinyEditor(IE的)

    ​ UEEditor (百度的)

    ​ CKEditor(比较老的)

    ​ KindEditor(中文版的)

    ​ KindEditor:

    ​ 基本配置

    ​ 处理XSS

    ​ Beautifulsoup4模块使用

    三、Tornado

    ​ Web框架:Tornado

    ​ Tornado内置模块实现爬虫

    四、爬虫

    ​ requests模块:请求地址获取文件,模拟浏览器向服务端发送请求

    • requests.put()

    • requests.get()

    • requests.post()

    • requests.patch()

    • requests.delete()

    • requests.head()

    • requests.options()

    • requests.request()

    • allow_redirects参数,是否是否重定向

      # Author:wylkjj
      # Date:2020/2/23
      # -*- coding:utf-8 -*-
      import requests
      from bs4 import BeautifulSoup
      import json
      
      # requests发送get请求
      response = requests.get('https://www.bilibili.com/')
      # print(response.text)
      soup = BeautifulSoup(response.text, features="html.parser")
      text_list = soup.find_all(name='div', class_='item')
      print(text_list)
      
      
      # requests发送post请求
      form_data = {
          'phone': '+8615044487970',
          'password': 'adpsasfff',
          'loginType': 2,
      }
      
      # request 参数 
      response = requests.post(
          url='https://dig.chouti.com/login',
          data=form_data,    # 请求头为 content-type:application/x-www-form-urlencoded
          params={'eric': '123456'},  # 拼接后url http://www.baidu.com/?query=eric
          json=json.dumps({'user': 'eric', 'pwd': '12345'}),  # 请求头会改变content-type:application/json
      )
      print(response.text)
      
      # request 参数 
      requests.request(
      	method = "GET",
          url = "http://www.baidu.com",
          params = {'query':'eric'},  
          data={},  # 数据传输,get用不到,post时把data数据放到请求体中传输到后端
          header={
              'referer': 'https://www.zhihu.com/signin?next=http%3A%2F%2Fwww.zhihu.com%2Fpeople%2Feric-wijing',
              'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3970.5 Safari/537.36'
          },  # 当requests访问被拒绝时,设置header中的Referer或'user-agent',因为可能是他们两个参数的问题,在network发送请求后的Header中
          cookies={},  
      )  
      
      # request 参数 
      response = requests.get(
          url='https://i-beta.cnblogs.com/settings',
          # 获取已登陆的信息
          cookies={'.CNBlogsCookie':'93C26874509F65701B9F02163426CC74B23CDE7B9383331E04AEA2BEA2FEBEB0E3DA7F41FAF308FB36B946F007B8981D38AFE66E2042A6A80D2E5BF31E45BCECF0A3343E9AA83FDDCC155278666854E135E069A3',},
          cert:'证书文件'  # 有些网站需要证书才能获取数据
      )
      print(response.text)
      

    ​ beautifulsoup:数据区提取(格式化)

    ​ 使用方法:引入from bs4 import BeautifulSoup,创建对象:soup = BeautifulSoup(html_doc, features="html.parser"),html_doc是要解析的对象,features="html.parser"是解析器,最快的解析器是lxml解析器,不过需要自行安装,html解析器是python内置的解析器;

    ​ soup.children的方法是获取所有模块,只不过只会寻找第一层body ;

    ​ soup.body.children会寻找出body所有的元素(body的下一层);

    ​ for tag in soup.body.descendants:循环tag.name能获取标签的类型属性(有div,就会获得其属性div),单独输出tag,循环遍历出所有标签;

    ​ from bs4 import Tag:遍历的每一个标签,获取其属性,可用其判断获取所有元素的属性;循环tag.name能获取详细的标签类型属性(有div,就会获得其属性div);tag.attrs可以获取所有的标签内部的所有属性对其进行增删改查操作。

    ​ soup.html.hidden = True;soup.head.hidden = True ;显示出隐藏的标签,如果不设置此属性,在进行soup操作时不会读取出hidden隐藏的内容。

    # Author:wylkjj
    # Date:2020/2/23
    from bs4 import BeautifulSoup
    from bs4 import Tag
    # Create your views here.
    html_doc = """
    <body>
    <div class="bili-banner1" style="background-image: url(&quot;//i0.hdslb.com/bfs/archive/7197cae46569a49abd98e0c51348068831be6a85.png&quot;);" data-v-5ff46558=""><div class="taper-line" data-v-5ff46558=""></div><div class="b-logo b-wrap" style="margin: 0" data-v-5ff46558=""><a href="//www.bilibili.com" class="head-logo" data-v-5ff46558=""><img src="//i0.hdslb.com/bfs/archive/1be2fd76cc98cdc6a595c05c3134fbf937a1c126.png" class="logo-img" data-v-5ff46558="">123456789</a><!----></div><!----></div>
    <div class="bili-banner2" style="background-image: url(&quot;//i0.hdslb.com/bfs/archive/7197cae46569a49abd98e0c51348068831be6a85.png&quot;);" data-v-5ff46558=""><div class="taper-line" data-v-5ff46558=""></div><div class="b-logo b-wrap" style="margin: 0" data-v-5ff46558=""><a href="//www.bilibili.com" class="head-logo" data-v-5ff46558=""><img src="//i0.hdslb.com/bfs/archive/1be2fd76cc98cdc6a595c05c3134fbf937a1c126.png" class="logo-img" data-v-5ff46558="">123456789</a><!----></div><!----></div>
    asdfasfasdfasdf
    <a>123456</a>
    <h3>123456</h3>
    <div class="bili-banner3" style="background-image: url(&quot;//i0.hdslb.com/bfs/archive/7197cae46569a49abd98e0c51348068831be6a85.png&quot;);" data-v-5ff46558=""><div class="taper-line" data-v-5ff46558=""></div><div class="b-logo b-wrap" style="margin: 0" data-v-5ff46558=""><a href="//www.bilibili.com" class="head-logo" data-v-5ff46558=""><img src="//i0.hdslb.com/bfs/archive/1be2fd76cc98cdc6a595c05c3134fbf937a1c126.png" class="logo-img" data-v-5ff46558="">123456789</a><!----></div><!----></div>
    </body>
    """
    # python内置解析器,但lxml使用时解析最快,需要安装
    soup = BeautifulSoup(html_doc, features="html.parser")
    # tag1 = soup.find(name='a')
    for tag in soup.body.descendants:
    # for tag in soup.body.children:
    # for tag in soup.children:
        if isinstance(tag, Tag):
            # print("属性:", tag.name, tag.attrs)
            pass
    tag1 = soup.find(name='a')
    del tag1.attrs['class']
    print(tag1)
    print(soup)
    
    tag1 = soup.find(name='a')
    tag1.clear()
    print(tag1)
    print(soup)
    

    ​ 单例模式:使用一个对象进行操作

    # Author:wylkjj
    # Date:2020/2/23
    # -*- coding:utf-8 -*-
    
    # 创建单例模式第一种方法
    class Foo:
        __instance = None
    
        @classmethod
        def instance(cls):
            if Foo.__instance:
                return Foo.__instance
            else:
                obj = Foo()
                Foo.__instance = obj
                return Foo.__instance
    
    
    obj1 = Foo()
    obj2 = Foo()
    print(obj1, obj2)
    
    
    # 创建单例模式第二种方法
    class Fo(object):
        __instance = None
    
        def __init__(self):
            pass
    
        def __new__(cls, *args, **kwargs):
            if cls.__instance:
                return cls.__instance
            else:
                obj = object.__new__(cls, *args, **kwargs)  # 创建类
                cls.__instance = obj
                return cls.__instance
    
    
    obj3 = Fo()
    obj4 = Fo()
    print(obj3, obj4)
    
    

    ​ scrapy框架:爬虫框架

    五、Web微信/微信公众平台登录

    只是在网页端允许登录时可以使用,但是由于微信取消了网页端的登录,无法实现,纯属个人喜好,理解理解。

    轮询:

      客户端定时向服务器端发送 Ajax 请求,服务器端接收到请求后马上返回信息并关闭连接。缺点是:有延时,无法满足即时通信的需求。

    长轮询(Comet):

      客户端向服务器端发送 Ajax 请求,服务器端接收到请求后保持住连接,直到有新消息才返回响应信息并关闭连接。客户端在处理请求返回信息(超时或有效数据)后再次发出请求,重新建立连接。缺点是:服务器保持连接会消耗较多的资源。

    WEB微信页:

    • 访问页面出现二维码
    • 长轮询监听是否已经扫码并且点击确认
    • 如何进行会话保持
    • 如何获取用户列表
    • 如何发送消息(接受消息)

    微信二维码获取地址的前缀:https://login.weixin.qq.com/qrcode/{0}

    由于现在无法进行操作,其它内容就不编辑了

  • 相关阅读:
    实验楼第二期比赛第二题
    基础练习题
    基本数据类型:数字、字符串、列表、元祖、字典、集合
    二进制与十进制转换
    Python基础--1.2 变量循环基础介绍
    Python基础--1.1Python基础介绍
    旋转木马特效代码
    javascript中全屏滑动效果实现
    正则基础知识总结
    getElementsByClassName 方法兼容性封装方法二
  • 原文地址:https://www.cnblogs.com/wylshkjj/p/12356471.html
Copyright © 2011-2022 走看看