zoukankan      html  css  js  c++  java
  • 1.2、Answer:web crawler question 2

    1.2、Answer:web crawler question 2

    概述

    2、Query库是基于JavaScript的第三方库,二、JavaScript是web客户端的脚本语言,难道jQuery是基于JavaScript语言编写的客户端的脚本语言的第三方库?python的第三方库和CSS选择器的关系?(关系库是:find、findAll、find_element_by_id)、Query库和AJAX技术的关系?如何实现部分网页信息而AJAX只需要加载一部分自己需求的网页数据?

    jQuery产生的背景

      Python执行JavaScript代码的效率非常低,既费时又费力,尤其是处理规模较大JavaScript代码时,如果有绕开JavaScript并直接解析它的方法(不需要执行JavaScript代码就可以获得信息)会非常实用,可以降低获取信息的难度。jQuery是一种JS框架。

    一、jQuery

    1、jQuery安装教程:https://www.runoob.com/jquery/jquery-install.html

    2、jQuery库是一个基于JavaScript语言的JavaScript 文件

    3、jQuery语法(XPath 与 CSS 选择器语法的组合$(selector).action(),$定义 jQuery;选择符(selector)"查询"和"查找" HTML 元素;action() 执行对元素的操作

    $(document).ready(function(){
      $("p").click(function(){
        $(this).hide();
      });
    });
    

    注:1、$(document).ready(function(){.. .}:jQuery 函数位于一个 document ready 函数中是为了防止文档在完全加载之前运行 jQuery 代码(在 DOM 加载完成后才操作 DOM )

       2、jQuery 的入口函数是在 html 所有标签(DOM)都加载之后,就会去执行;JavaScript 的 window.onload 事件是等到所有内容,包括外部图片之类的文件加载完后,才执行

    4、jQuery库使用:通过HTML中标签调用jQuery:<script>. . .</script>

    # jquery库文件在本地并且与网页组成的各个文件在同一目录
    <head>
    <script src="jquery-1.10.2.min.js"></script>
    </head>
    # 调用CDN中的 jquery 库
    <head>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
    </script>
    </head>
    

    二、jQuery结构体

    1、

    三、jQuery模块和功能

    1、jQuery 选择器

    # jQuery 选择器允许您对 HTML 元素组或单个元素进行操作
    # 通过 HTML 元素的 id 属性选取指定的元素:$("#test") 
    # 通过指定的 class 查找元素:$(".test") 
    # 基于元素名选取元素:$("p") 
    

    2、jQuery 事件:页面对不同访问者的响应叫做事件,主要包含:鼠标事件、键盘事件、表单事件、文档/窗口

    # jQuery事件
    # 1、在元素上移动鼠标。
    # 2、选取单选按钮
    # 3、点击元素

    2.1、鼠标单击事件:click(),鼠标双击事件:dblclick()当按钮点击事件被触发时会调用一个函数

    $("p").click(function(){
      $(this).hide();
    });
    $("p").dblclick(function(){
      $(this).hide();
    });

    2.2、鼠标移动:1、当鼠标指针穿过元素时:mouseenter();2、当鼠标指针离开元素时:mouseleave();3、当鼠标指针移动到元素上方:mousedown();4、当在元素上松开鼠标按

    钮时:mouseup();5、模拟光标悬停事件:hover();6、通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点:focus();7、该元素失去焦点时:blur()

    # 当鼠标指针穿过元素时
    $("#p1").mouseenter(function(){ alert('您的鼠标移到了 id="p1" 的元素上!'); }); # 当鼠标指针离开元素时 $("#p1").mouseleave(function(){ alert("再见,您的鼠标离开了该段落。"); }); # 当鼠标指针移动到元素上方 $("#p1").mousedown(function(){ alert("鼠标在该段落上按下!"); }); # 当在元素上松开鼠标按钮时 $("#p1").mouseup(function(){ alert("鼠标在段落上松开。"); }); # 模拟光标悬停事件 $("#p1").hover( function(){ alert("你进入了 p1!"); }, function(){ alert("拜拜! 现在你离开了 p1!"); } ); # 通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点 $("input").focus(function(){ $(this).css("background-color","#cccccc"); }); # 该元素失去焦点时 $("input").blur(function(){ $(this).css("background-color","#ffffff"); });

    2.3、显示和隐藏元素:jQuery hide() 和 show();jQuery toggle()可以切换 hide() 和 show() 方法

        语法: $(selector).hide(speed,callback)、$(selector).show(speed,callback)、$(selector).toggle(speed,callback)

    $(document).ready(function(){
      $(".hidebtn").click(function(){
        $("div").hide(1000,"linear",function(){
          alert("Hide() 方法已完成!");
        });
      });
    });
    
    $("button").click(function(){
      $("p").toggle();
    });
    

    . . .

    四、 AJAX(Asynchronous JavaScript and XML) 技术

    1、AJAX 是与服务器交换数据的技术,在不重载全部页面的情况下,实现了对部分网页的更新。通过四种Ajax工具JQuery、JSON、DWR、Prototype分别实现页面与后台(类文件)的数据交互,从而使得在不刷新页面的情况下取得数据AJAX 的应用案例:谷歌地图、腾讯微博、优酷视频、人人网. . .

    2、这个网页表单使用Ajax技术与web服务器通信

    3、AJAX 技术创建的表单,并根据web服务器的响应创建动态性极强网页的过程

    • XMLHttpRequest 对象 (异步的与服务器交换数据);XMLHttpRequest对象和web服务器交互,在后台与服务器交换数据,从URL获取数据,而无需让整个的页面刷新。支持 HTTP 、 file:// 和 FTP等协议!

    • JavaScript/DOM (信息显示/交互)

    • CSS (给数据定义样式)

    • XML (作为转换数据的格式). . .

    注意:1、AJAX与Flash、Silverlight和Java Applet等RIA技术是有区分的;2、AJAX应用程序与浏览器和平台无关的

    4、AJAX 工作原理

    5、AJAX 实例

    <head>
    <script>
    function loadXMLDoc()
    {
        .... AJAX 脚本执行 ...
    }
    </script>
    </head>
    

    6、XMLHttpRequest 对象向服务器发送请求: open() 和 send() 方法:

    xmlhttp.open(method,url,asynctrue/false));
    xmlhttp.send();
    

     注:1、method:请求的类型;GET 或 POST比较

        1、与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用

        2、然而,在以下情况中,请使用 POST 请求:

      •   无法使用缓存文件(更新服务器上的文件或数据库)
      •   向服务器发送大量数据(POST 没有数据量限制)
      •   发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

      2、使用 HTML 表单形式 POST 数据:使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据

    xmlhttp.open("POST","/try/ajax/demo_post2.php",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("fname=Henry&lname=Ford");
    

    7、使用 async=true 时,规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数,每当 readyState 属性改变时,就会调用该函数

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);
    xmlhttp.send();
    

    注:1、当您使用 async=false 时,请不要编写 onreadystatechange 函数 - 把代码放到 send() 语句后面即可

      2、readyState 属性存有 XMLHttpRequest 的状态信息,readyState 属性取值

      •   0: 请求未初始化
      •   1: 服务器连接已建立
      •   2: 请求已接收
      •   3: 请求处理中
      •   4: 请求已完成,且响应已就绪

      3、onreadystatechange 事件被触发 4 次(0 - 4), 分别是: 0-1、1-2、2-3、3-4,对应着 readyState 的每个变化

    8、XMLHttpRequest 对象向服务器发送请求,web服务器响应

    1、XMLHttpRequest 对象的 responseText 或 responseXML 属性处理不同格式web服务器响应

    responseText属性:作为 XML 对象进行解析,适用于服务器的响应是 XML

    xmlDoc=xmlhttp.responseXML;
    txt="";
    x=xmlDoc.getElementsByTagName("ARTIST");
    for (i=0;i<x.length;i++)
    {
        txt=txt + x[i].childNodes[0].nodeValue + "<br>";
    }
    document.getElementById("myDiv").innerHTML=txt;
    

     responseXML 属性:responseText 属性返回字符串形式的响应,适用于服务器的响应并非 XML

    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    

    注:AJAX 可用来与数据库进行动态通信等

    一、showCustomer() 函数

    function showCustomer(str)
    {
      var xmlhttp;    
      if (str=="")
      {
        document.getElementById("txtHint").innerHTML="";
        return;
      }
      if (window.XMLHttpRequest)
      {
        // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
        xmlhttp=new XMLHttpRequest();
      }
      else
      {
        // IE6, IE5 浏览器执行代码
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function()
      {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
          document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
      xmlhttp.open("GET","/try/ajax/getcustomer.php?q="+str,true);
      xmlhttp.send();
    }
    

     二、服务器端:"getcustomer.php" 中的源代码负责对数据库进行查询,然后用 HTML 表格返回结果

    <%
    response.expires=-1
    sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="
    sql=sql & "'" & request.querystring("q") & "'"
    
    set conn=Server.CreateObject("ADODB.Connection")
    conn.Provider="Microsoft.Jet.OLEDB.4.0"
    conn.Open(Server.Mappath("/db/northwind.mdb"))
    set rs=Server.CreateObject("ADODB.recordset")
    rs.Open sql,conn
    
    response.write("<table>")
    do until rs.EOF
      for each x in rs.Fields
        response.write("<tr><td><b>" & x.name & "</b></td>")
        response.write("<td>" & x.value & "</td></tr>")
      next
      rs.MoveNext
    loop
    response.write("</table>")
    %>
    
  • 相关阅读:
    第六次作业--结对编程第二次
    OneZero第四周第三次站立会议(2016.4.13)
    结对编程体会2
    OneZero第四周第二次站立会议(2016.4.12)
    关于“单元测试工具”
    OneZero第四周第一次站立会议(2016.4.11)
    OneZero第四周——预完成功能点统计
    OneZero第三周第五次站立会议(2016.4.8)
    OneZero第三周第四次站立会议(2016.4.7)
    OneZero第三周第三次站立会议(2016.4.6)
  • 原文地址:https://www.cnblogs.com/yinminbo/p/12020198.html
Copyright © 2011-2022 走看看