Python基础知识进阶之数据爬虫

 一、爬虫概述

       爬虫是指利用网络抓取模块对某个网站或者某个应用中有价值的信息进行提取。还可以模拟用户在浏览器或者APP应用上的操作行为,实现程序自动化。简单来说就是我们把互联网有价值的信息都比喻成大的蜘蛛网,而各个节点就是存放的数据,而蜘蛛网的上蜘蛛比喻成爬虫,而爬虫是可以自动抓取互联网信息的程序,从互联网上抓取一切有价值的信息,并且把站点的信息爬到本地并且存储方便使用。


二、爬虫构架

       Python爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。

       1.调度器:相当于一台电脑CPU,主要负责调度URL管理器、下载器、解析器之间协调工作

       2.URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。 

       URL(外文名:Uniform Resource Locator,中文名:统一资源定位符),统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。通常由网络协议、服务器域名、资源在服务器中位置组成。例如我们最熟悉的豆瓣电影排行榜TOP250 https://movie.douban.com/top250

http - - 网络协议         movie.douban.com - - 服务器域名        top250 - - 资源在服务器中位置

       3.网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包)。

       4.网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用lxml进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 树的方式进行解析的。

       5.应用程序:就是从网页中提取的有用数据组成的一个应用。


三、爬虫流程

       1.发起请求:通过htttp协议向目标站点服务器发送发送一个包含headers(标头)、data(数据)等信息的request(请求),等待服务器响应。这个请求的过程就像我们打开浏览器,在浏览器地址栏输入一个网址然后点击回车。

       HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网( World Wide Web )服务器传输超文本到本地浏览器的传送协议。

        万维网是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过HTTP(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源。

       HTTP 是一个基于 TCP/IP 通信协议来传递数据(HTML 文件、图片文件、查询结果等)。

       HTTPS 协议是 HyperText Transfer Protocol Secure(超文本传输安全协议)的缩写,是一种通过计算机网络进行安全通信的传输协议。

       HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

       HTTP 的 URL 是由 http:// 起始与默认使用端口 80,而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443

       2.获取响应: 如果服务器能正常响应,我们会得到一个response(请求),response(请求)的内容便是所要获取的内容,类型可能有html、json字符串,二进制数据(图片,视频等)等类型。这个过程就是服务器接收客户端的请求,进过解析发送给浏览器的网页html文件。  

       3.解析内容: 得到的内容可能是html,可以使用正则表达式,网页解析库进行解析。也可能是json,可以直接转为json对象解析。可能是二进制数据,可以做保存或者进一步处理。这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。  

       4.保存数据: 保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg、mp4 等格式的文件。这就相当于我们在浏览网页时,下载网页上的图片或者视频。


四、请求状态

       当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

       1**  信息,服务器收到请求,需要请求者继续执行操作(100 - 客户端应继续请求);

       2**  成功,操作被成功接收并处理(200 - 请求成功);

       3**  重定向,需进一步的操作以完成请求(301 - 资源(网页等)被永久转移到其它URL);

       4**  客户端错误,请求包含语法错误或无法完成请求(404 - 请求资源(网页等)不存在);

       5**  服务器错误,服务器在处理请求的过程中发生了错误(500 - 内部服务器错误)。


五、请求方法

         HTTP 请求方式一共有 9 种,分别为 POST 、GET 、HEAD、PUT 、PATCH 、 OPTIONS 、DELETE 、CONNECT 、 TRACE 。其中前三种 POST 、GET 、HEAD 是 HTTP 1.0 定义的,后六种 PUT 、PATCH 、 OPTIONS 、DELETE 、CONNECT 、 TRACE 是 HTTP 1.1 定义的。

       1.GET请求指定的页面信息,并返回实体主体;

       2.HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头;

       3.POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改;

       4.PUT从客户端向服务器传送的数据取代指定的文档的内容;

       5.DELETE请求服务器删除指定的页面;

       6.CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器;

       7.OPTIONS允许客户端查看服务器的性能;

       8.TRACE回显服务器收到的请求,主要用于测试或诊断;

       9.PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。


六、网页构成

       1、HTML(超文本标记语言):网页的本质就是超文本标记语言,他是将网页的各个部分标记出来让浏览器进行解析的。

       2、CSS(层叠样式表):HTML用来进行标记,但是标记出来的网页比较混乱,美观程度比较差,CSS就是将HTML标记出来的内容合理摆放,并且对网页中的内容进行美化用的。即:HTML用来搭建一个框架,CSS用来美化这个框架。

       3、客户端脚本语言(JavaScript):JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,用来进行网站和客户的交互。

       HTML、CSS、JavaScript关系:HTML用来进行标记,CSS让页面更加美化、JavaScript来进行交互,分工很明确。

       4、web服务器:一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。

       5、数据库:数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。在web里面他是用来让服务器端脚本语言来调用的。常用的数据库:Oracle、MySQL、SQL Server、DB2、MariDB

       冗余度就是从安全角度考虑多余的一个量,这个量就是为了保障仪器、设备或某项工作在非正常情况下也能正常运转。


七、网页文档

Python基础知识进阶之数据爬虫_第1张图片

                    声明为 HTML文档 

       ..                   网页的根元素

       ..                元素包含了文档的元数据

              定义网页编码格式为 utf-8。

       ..<title>                      元素描述了文档的标题</span></p> <p><span style="color:#a2e043;">      </span><span style="color:#956fe7;"> <style type="text/css">       用于为 HTML 文档定义CSS样式信息。</span></p> <p><span style="color:#a2e043;">       </span><span style="color:#4da8ee;"><body>..</body>                表示用户可见的内容 </span></p> <p><span style="color:#a2e043;">     </span><span style="color:#fe2c24;">  <div>..</div>                      表示框架</span></p> <p><span style="color:#a2e043;">      </span><span style="color:#ff9900;"> <p>..</p >                          表示段落</span></p> <p><span style="color:#a2e043;">     </span><span style="color:#ffd900;">  </span><span style="color:#a2e043;"><ul>..</ul>                         定义无序列表</span></p> <p><span style="color:#a2e043;">       <ol>..</ol>                         定义有序列表 </span></p> <p><span style="color:#a2e043;">       <li>..</li>                           表示列表项 </span></p> <p><span style="color:#a2e043;">  </span><span style="color:#38d8f0;">    < img src="" alt="">           表示图片</span></p> <p><span style="color:#a2e043;">    </span><span style="color:#956fe7;">  <h1>..</h1>                      表示标题 </span></p> <p><span style="color:#a2e043;">      </span><span style="color:#956fe7;"><a href="">..</a >             表示超链接</span></p> <hr> <h2><span style="color:#4da8ee;">八、requests</span></h2> <h3><span style="color:#ff9900;">1.requests定义</span></h3> <p><span style="color:#fe2c24;">        </span><span style="color:#a2e043;">Requests 是一个基于 Python 的 HTTP 库,它是可以在 Python 内置模块的基础上进行高度封装,使得发出 HTTP 请求变得更加简单和方便。Requests 可以通过 Apache2 Licensed 许可证进行开发。使用 Requests 库可以轻松完成浏览器相关的任何操作,包括模拟浏览器的请求。Requests 库可以用于网络爬虫,使得爬虫能够更加便捷迅速地实现。</span></p> <h3><span style="color:#ff9900;">2.requests参数</span></h3> <p><span style="color:#ffd900;"><strong>       </strong></span><span style="color:#fe2c24;"><strong> requests.request(</strong></span><span style="color:#ffd900;"><strong>method</strong></span><span style="color:#fe2c24;"><strong>,</strong></span><span style="color:#a2e043;"><strong>url</strong></span><span style="color:#fe2c24;"><strong>,</strong></span><span style="color:#38d8f0;"><strong>**kwargs</strong></span><span style="color:#fe2c24;"><strong>)</strong></span></p> <p><span style="color:#ffd900;">       method:请求方式           </span><span style="color:#a2e043;">url: 请求网址</span><span style="color:#ffd900;">        </span><span style="color:#38d8f0;"> **kwargs:控制访问参数,为可选项。</span></p> <p><span style="color:#ffd900;">      </span><span style="color:#fe2c24;"> params: 请求参数,字典或字节序列作为参数传入,常用于发送 GET 请求时使用;</span></p> <p><span style="color:#ffd900;">      </span><span style="color:#ff9900;"> headers: 设置请求头,字典作为参数传入;</span></p> <p><span style="color:#ffd900;">       cookies: 字典cookies 值 , 用户身份信息;</span></p> <p><span style="color:#ffd900;">      </span><span style="color:#a2e043;"> proxies: 设置ip代理,字典作为参数传入;</span></p> <p><span style="color:#ffd900;">   </span><span style="color:#38d8f0;">    data:  字典、字节或文件对象作为参数;</span></p> <p><span style="color:#ffd900;">       json:  JSON格式的数据作为参数;</span></p> <p><span style="color:#ffd900;">       </span><span style="color:#4da8ee;">verify:  请求网站时是否需要验证证书,认证SSL证书开关;</span></p> <p><span style="color:#ffd900;">     </span><span style="color:#fe2c24;">  cert : 本地SSL证书</span></p> <p><span style="color:#ffd900;">      </span><span style="color:#ff9900;"> timeout: 设置响应时间,一旦超过,程序会报错;</span></p> <p><span style="color:#ffd900;">       allow_redirects: 是否允许重定向, 布尔类型数据,默认为Ture;</span></p> <p><span style="color:#ffd900;">     </span><span style="color:#a2e043;">  files: 上传文件相关参数,以字典或文件对象的形式传递;</span></p> <p><span style="color:#ffd900;">     </span><span style="color:#38d8f0;">  auth: 指定登陆时的账号和密码,元组作为参数传入,支持HTTP认证功能;</span></p> <p><span style="color:#ffd900;">       </span><span style="color:#956fe7;">stream:  获取内容立即下载开关,布尔值,默认为True,为True时会先下载响应头,当Reponse调用content方法时才下载响应体。</span></p> <h3><span style="color:#ffd900;">3.requests属性 </span></h3> <p><span style="color:#a2e043;">      </span><span style="color:#fe2c24;"> url:返回响应的URL地址;</span></p> <p><span style="color:#a2e043;">      </span><span style="color:#ff9900;"> status_code:返回响应状态码,例如200表示请求成功,404表示请求的资源不存在等;</span></p> <p><span style="color:#a2e043;">    </span><span style="color:#38d8f0;">   headers:返回响应头信息,是一个字典类型;</span></p> <p><span style="color:#a2e043;">      </span><span style="color:#956fe7;"> text:返回响应的内容,是一个字符串类型;</span></p> <p><span style="color:#a2e043;">    </span><span style="color:#4da8ee;">   content:返回响应的二进制内容,是一个bytes类型;</span></p> <p><span style="color:#a2e043;">       encoding:返回响应内容的编码格式;</span></p> <p><span style="color:#a2e043;">      </span><span style="color:#ff9900;"> cookies:返回响应的cookie信息,是一个字典类型;</span></p> <p><span style="color:#a2e043;">      </span><span style="color:#ffd900;"> json():返回响应的json格式数据,如果响应内容不是json格式,则会抛出异常;</span></p> <p><span style="color:#a2e043;">     </span><span style="color:#956fe7;">  history:返回请求历史,是一个列表类型,其中每个元素都是一个response对象。</span></p> <hr> <h2><span style="color:#fe2c24;">九、BeautifulSoup(bs4 )</span></h2> <h3>      <span style="color:#a2e043;"> </span><span style="color:#ff9900;">1.BeautifulSoup定义</span></h3> <p><span style="color:#a2e043;">       BeautifulSoup是一个工具箱,通过解析文档为用户提供需要抓取的数据。因为简单,所以不需要多少代码就可以写出一个完整的应用程序。  Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为UTF-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时你仅仅需要说明一下原始编码方式就可以了。  Beautiful Soup已成为和lXML、HTML一样出色的Python解释器,为用户灵活地提供不同的解析策略或强劲的速度。  所以说,利用它可以省去很多烦琐的提取工作,提高了解析效率。</span></p> <h3>     <span style="color:#38d8f0;">  </span><span style="color:#ffd900;">2.BeautifulSoup解析</span></h3> <table border="1" style="width:680px;"> <tbody> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:94px;"> <p style="text-align:center;"><span style="color:#ff9900;"><strong>解释器</strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:259px;"> <p style="text-align:center;"><span style="color:#ff9900;"><strong>用法</strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:178px;"> <p style="text-align:center;"><span style="color:#ff9900;"><strong>优点</strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:150px;"> <p style="text-align:center;"><span style="color:#ff9900;"><strong>缺点</strong></span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:94px;"> <p style="text-align:center;"><span style="color:#ffd900;">Python</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:259px;"> <p style="text-align:center;"><span style="color:#ffd900;">BeautifulSoup(markup, “html.parser”)</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:178px;"> <p style="text-align:center;"><span style="color:#ffd900;">Python的内置标准库、执行速度适中、文档容错能力强</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:150px;"> <p style="text-align:center;"><span style="color:#ffd900;">Python 2.7.3及Python 3.2.2之前的版本文档容错能力差</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:94px;"> <p style="text-align:center;"><span style="color:#a2e043;">xml HTML</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:259px;"> <p style="text-align:center;"><span style="color:#a2e043;">BeautifulSoup(markup, “lxml”)</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:178px;"> <p style="text-align:center;"><span style="color:#a2e043;">速度快、文档容错能力强</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:150px;"> <p style="text-align:center;"><span style="color:#a2e043;">需要安装C语言库</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:94px;"> <p style="text-align:center;"><span style="color:#4da8ee;">lxml XML</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:259px;"> <p style="text-align:center;"><span style="color:#4da8ee;">BeautifulSoup(markup, “xml”)</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:178px;"> <p style="text-align:center;"><span style="color:#4da8ee;">速度快、唯一支持XML的解析器</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:150px;"> <p style="text-align:center;"><span style="color:#4da8ee;">需要安装C语言库</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:94px;"> <p style="text-align:center;"><span style="color:#956fe7;">html5lib</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:259px;"> <p style="text-align:center;"><span style="color:#956fe7;">BeautifulSoup(markup, “html5lib”)</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:178px;"> <p style="text-align:center;"><span style="color:#956fe7;">最好的容错性、以浏览器的方式解析文档、生成HTML5格式的文档</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;width:150px;"> <p style="text-align:center;"><span style="color:#956fe7;">速度慢、不依赖外部扩展</span></p> </td> </tr> </tbody> </table> <h3>       <span style="color:#a2e043;">3.BeautifulSoup方法</span></h3> <p><strong>       </strong><span style="color:#ff9900;"><strong>1)find_all()</strong>:搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件。返回值类型是bs4.element.ResultSet,是一个包含所有符合过滤条件的 tag子节点的列表。</span></p> <p>       <span style="color:#fe2c24;">find_all(</span><span style="color:#ffd900;">name</span><span style="color:#fe2c24;">, </span><span style="color:#a2e043;">attrs</span><span style="color:#fe2c24;">,</span><span style="color:#38d8f0;"> recursive</span><span style="color:#fe2c24;">, </span><span style="color:#956fe7;">text</span><span style="color:#fe2c24;">, </span><span style="color:#4da8ee;">**kwargs</span><span style="color:#fe2c24;">)</span></p> <p>        <span style="color:#ffd900;">name:要搜索的标签的名称或正则表达式。</span></p> <p>      <span style="color:#a2e043;">  attr :要匹配的标签属性。可以是一个字典或一个函数,函数返回 True 表示匹配成功。</span></p> <p>      <span style="color:#38d8f0;"> recursive 参数: 调用tag的 find_all() 方法时,Beautiful Soup会检索当前tag的所有子孙节点。如果只想搜索tag的直接子节点,可以使用参数 recursive=False 。</span></p> <p>     <span style="color:#956fe7;"> text 参数:要搜索的文本。可以是一个字符串或一个函数,函数返回 True 表示匹配成功。</span></p> <p>      <span style="color:#4da8ee;"> **kwargs参数:其他参数将传递给Beautiful Soup解析器。</span></p> <p><strong>      </strong> <span style="color:#ffd900;"><strong>2)find()</strong>:同上,只不过返回的值是筛选到的第一个tag子节点,类型为bs4.element.Tag。</span></p> <p>    <span style="color:#fe2c24;"><strong>   </strong><strong>BeautifulSoup还有10个类似find_all()和find()的查找方法用来搜索文档的不同部分。</strong></span></p> <p><strong>       </strong><span style="color:#ff9900;">find_parent():查找父节点;<br>        find_parents():递归查找父节点。</span></p> <p>       <span style="color:#ffd900;">find_next_siblings():查找后面的兄弟节点;<br>        find_next_sibling():查找后面满足条件的第一个兄弟节点。</span></p> <p>       <span style="color:#a2e043;">find_previous_siblings():方法返回所有符合条件的前面的兄弟节点;<br>        find_previous_sibling():方法返回第一个符合条件的前面的兄弟节点。</span></p> <p>       <span style="color:#956fe7;">find_all_next():查找后面所有节点;<br>        find_next():查找后面第一个满足条件的节点。</span></p> <p>       <span style="color:#38d8f0;">find_all_previous():查找前面所有满足条件的节点;<br>        find_previous():查找前面第一个满足条件的节点。</span></p> <p>     <span style="color:#a2e043;">  <strong>3)selector():</strong>使用 CSS 选择器选取元素。支持大多数 CSS 选择器语法。</span></p> <p>    <strong>   </strong><span style="color:#38d8f0;"><strong>4)descendants():</strong>返回所有子孙元素。</span></p> <p>       <span style="color:#956fe7;"><strong>5)parents():</strong>返回所有祖先元素。</span></p> <p>     <span style="color:#4da8ee;"><strong>  6)next_siblings():</strong>返回当前元素之后的所有同级元素。</span></p> <p>     <span style="color:#ff9900;"> <strong> 7)previous_siblings():</strong>返回当前元素之前的所有同级元素。</span></p> <h3>     <span style="color:#38d8f0;">  4.BeautifulSoup属性</span></h3> <p><strong>      </strong><span style="color:#fe2c24;">1)tag.name: tag对应的名称;</span></p> <p>    <span style="color:#ffd900;">  2)tag.attrs: tag属性的键值对;</span></p> <p>      <span style="color:#a2e043;">3)tag['class']:tag属性class键对应的值,还可直接赋值进行修改;</span></p> <p>     <span style="color:#38d8f0;"> 4)tag.contents: 将tag的子节点以列表方式输出;</span></p> <p>    <span style="color:#956fe7;">  5)tag.children:返回tag的子节点迭代器;</span></p> <p>   <span style="color:#4da8ee;">   6)tag.descendants:可以对所有tag的子孙节点进行递归循环。</span></p> <h3>     <span style="color:#956fe7;">  5.BeautifulSoup方法</span></h3> <p>      <span style="color:#ff9900;">1)tag.get_text(): 获取tag中间的文本,可能包含子tag;</span></p> <p>     <span style="color:#ffd900;"> 2)tag.get(‘href’): 获取tag里href属性对应的值,等价于tag[‘href’]。</span></p> <hr> <h2><span style="color:#ff9900;">十、CSS选择器</span></h2> <h3><span style="color:#ffd900;">1.基本选择器</span></h3> <table border="1" style="width:680px;"> <tbody> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;"><strong>选择器</strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;"><strong>示例  </strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;"><strong> 说明</strong></span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">.class    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">.intro    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择class="intro"的所有节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">#id    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">#firstname    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择id="firstname"的所有节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">*    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">*    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择所有节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">element    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">p    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择所有p节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">element,element    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">div,p    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择所有div节点和所有p节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">element element    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">div p    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择div节点内部的所有p节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">element>element    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">div>p    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择父节点为div节点的所有p节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">element+element    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">div+p    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择紧接在div节点之后的所有p节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">element~element    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">p~ul    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择和p元素拥有相同父节点,并且在p元素之后的ul节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[attribute^=value]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">a[src^=“https”]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择其src属性值以"https"开头的每个a节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[attribute$=value]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">a[src$=".png"]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择其src属性以".png"结尾的所有a节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[attribute*=value]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">a[src*=“abc”]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择其src属性中包含"abc"子串的每个a节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[attribute]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[target]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择带有target属性所有节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[attribute=value]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[target=_blank]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择target="_blank"的所有节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[attribute~=value]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[title~=china]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择title属性包含单词"china"的所有节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[attribute|=value]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">[lang|=zh]    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#ffd900;">选择lang属性值以"zh"开头的所有节点</span></p> </td> </tr> </tbody> </table> <h3><span style="color:#38d8f0;">2.位置选择器</span></h3> <table border="1" style="width:680px;"> <tbody> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;"><strong>选择器    </strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;"><strong>示例    </strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;"><strong>说明</strong></span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:first-of-type    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:first-of-type    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素是其父级的第一个p元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:last-of-type    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:last-of-type    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素是其父级的最后一个p元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:only-of-type    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:only-of-type    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素是其父级的唯一p元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:only-child    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:only-child  </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;"> 选择每个p元素是其父级的唯一子元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:nth-child(n)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:nth-child(2)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素是其父级的第二个子元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:nth-last-child(n)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:nth-last-child(2)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素的是其父级的倒数第二个子元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:nth-of-type(n)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:nth-of-type(2)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素是其父级的第二个p元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:nth-last-of-type(n)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:nth-last-of-type(2)</span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素的是其父级的倒数第二个p元素</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">:last-child    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">p:last-child  </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#38d8f0;">选择每个p元素是其父级的最后一个子级。</span></p> </td> </tr> </tbody> </table> <h3><span style="color:#a2e043;">3.其他选择器</span></h3> <table border="1" style="width:680px;"> <tbody> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;"><strong>选择器    </strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;"><strong>示例    </strong></span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;"><strong>说明</strong></span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:not(selector)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:not(p)   </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择非p节点的节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:empty    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">p:empty    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择没有子节点的p节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">::selection    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">::selection    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择被用户选取的节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:focus    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">input:focus    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择获得焦点的input节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:root    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:root    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择文档的根节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:enabled    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">input:enabled    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择每个启用的input节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:disabled    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">input:disabled    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择每个禁用的input节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:checked    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">input:checked    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择每个被选中的input节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:link    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">a:link    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择所有未被访问的链接</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:visited    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">a:visited    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择所有已被访问的链接</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:active    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">a:active    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择活动链接</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:hover    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">a:hover    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择鼠标指针位于其上的链接</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:first-letter    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">p:first-letter    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择每个p节点的首字母</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:first-line    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">p:first-line    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择每个p节点的首行</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:first-child    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">p:first-child    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择属于父节点的第一个子节点的每个p节点</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:before    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">p:before    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">在每个p节点的内容之前插入内容</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:after    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">p:after    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">在每个p节点的内容之后插入内容</span></p> </td> </tr> <tr> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">:lang(language)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">p:lang(it)    </span></p> </td> <td style="background-color:#ffffff;border-color:#33cc99;text-align:center;vertical-align:middle;"> <p style="text-align:center;"><span style="color:#a2e043;">选择带有以"it"开头的lang属性值的每个p节点</span></p> </td> </tr> </tbody> </table> <hr> <div> <p class="img-center"><a href="http://img.e-com-net.com/image/info8/34ba9719bf174d88a5f1bb9f7e0304bb.jpg" target="_blank"><img alt="Python基础知识进阶之数据爬虫_第2张图片" src="http://img.e-com-net.com/image/info8/34ba9719bf174d88a5f1bb9f7e0304bb.jpg" width="650" height="343" style="border:1px solid black;"></a></p> <p>​</p> </div> <hr> <p style="text-align:center;"><span style="color:#fe2c24;">有兴趣的小伙伴可以参照爬虫电影排行榜(requests + bs4 )进行学习。</span></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1670781415186325504"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(进阶,python,爬虫,开发语言)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835511912843014144.htm" title="理解Gunicorn:Python WSGI服务器的基石" target="_blank">理解Gunicorn:Python WSGI服务器的基石</a> <span class="text-muted">范范0825</span> <a class="tag" taget="_blank" href="/search/ipython/1.htm">ipython</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico</div> </li> <li><a href="/article/1835506869838376960.htm" title="Python数据分析与可视化实战指南" target="_blank">Python数据分析与可视化实战指南</a> <span class="text-muted">William数据分析</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>在数据驱动的时代,Python因其简洁的语法、强大的库生态系统以及活跃的社区,成为了数据分析与可视化的首选语言。本文将通过一个详细的案例,带领大家学习如何使用Python进行数据分析,并通过可视化来直观呈现分析结果。一、环境准备1.1安装必要库在开始数据分析和可视化之前,我们需要安装一些常用的库。主要包括pandas、numpy、matplotlib和seaborn等。这些库分别用于数据处理、数学</div> </li> <li><a href="/article/1835505858939809792.htm" title="python os.environ" target="_blank">python os.environ</a> <span class="text-muted">江湖偌大</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a> <div>os.environ['TF_CPP_MIN_LOG_LEVEL']='0'#默认值,输出所有信息os.environ['TF_CPP_MIN_LOG_LEVEL']='1'#屏蔽通知信息(INFO)os.environ['TF_CPP_MIN_LOG_LEVEL']='2'#屏蔽通知信息和警告信息(INFO\WARNING)os.environ['TF_CPP_MIN_LOG_LEVEL']='</div> </li> <li><a href="/article/1835505606245576704.htm" title="Python中os.environ基本介绍及使用方法" target="_blank">Python中os.environ基本介绍及使用方法</a> <span class="text-muted">鹤冲天Pro</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录python中os.environos.environ简介os.environ进行环境变量的增删改查python中os.environ的使用详解1.简介2.key字段详解2.1常见key字段3.os.environ.get()用法4.环境变量的增删改查和判断是否存在4.1新增环境变量4.2更新环境变量4.3获取环境变量4.4删除环境变量4.5判断环境变量是否存在python中os.envi</div> </li> <li><a href="/article/1835505226933694464.htm" title="Pyecharts数据可视化大屏:打造沉浸式数据分析体验" target="_blank">Pyecharts数据可视化大屏:打造沉浸式数据分析体验</a> <span class="text-muted">我的运维人生</span> <a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%BC%80%E5%8F%91/1.htm">运维开发</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%85%B1%E4%BA%AB/1.htm">技术共享</a> <div>Pyecharts数据可视化大屏:打造沉浸式数据分析体验在当今这个数据驱动的时代,如何将海量数据以直观、生动的方式展现出来,成为了数据分析师和企业决策者关注的焦点。Pyecharts,作为一款基于Python的开源数据可视化库,凭借其丰富的图表类型、灵活的配置选项以及高度的定制化能力,成为了构建数据可视化大屏的理想选择。本文将深入探讨如何利用Pyecharts打造数据可视化大屏,并通过实际代码案例</div> </li> <li><a href="/article/1835504723210366976.htm" title="第四天旅游线路预览——从换乘中心到喀纳斯湖" target="_blank">第四天旅游线路预览——从换乘中心到喀纳斯湖</a> <span class="text-muted">陟彼高冈yu</span> <a class="tag" taget="_blank" href="/search/%E5%9F%BA%E4%BA%8EGoogle/1.htm">基于Google</a><a class="tag" taget="_blank" href="/search/earth/1.htm">earth</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/%E7%9A%84%E6%97%85%E6%B8%B8%E8%A7%84%E5%88%92%E5%92%8C%E9%A2%84%E8%A7%88/1.htm">的旅游规划和预览</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a> <div>第四天:从贾登峪到喀纳斯风景区入口,晚上住宿贾登峪;换乘中心有4路车,喀纳斯①号车,去喀纳斯湖,路程时长约5分钟;将上面的的行程安排进行动态展示,具体步骤见”Googleearthstudio进行动态轨迹显示制作过程“、“Googleearthstudio入门教程”和“Googleearthstudio进阶教程“相关内容,得到行程如下所示:Day4-2-480p</div> </li> <li><a href="/article/1835504470440636416.htm" title="Goolge earth studio 进阶4——路径修改与平滑" target="_blank">Goolge earth studio 进阶4——路径修改与平滑</a> <span class="text-muted">陟彼高冈yu</span> <a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a><a class="tag" taget="_blank" href="/search/earth/1.htm">earth</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/%E8%BF%9B%E9%98%B6%E6%95%99%E7%A8%8B/1.htm">进阶教程</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a> <div>如果我们希望在大约中途时获得更多的城市鸟瞰视角。可以将相机拖动到这里并创建一个新的关键帧。camera_target_clip_7EarthStudio会自动平滑我们的路径,所以当我们通过这个关键帧时,不是一个生硬的角度,而是一个平滑的曲线。camera_target_clip_8路径上有贝塞尔控制手柄,允许我们调整路径的形状。右键单击,我们可以选择“平滑路径”,这是默认的自动平滑算法,或者我们可</div> </li> <li><a href="/article/1835504217729626112.htm" title="Python教程:一文了解使用Python处理XPath" target="_blank">Python教程:一文了解使用Python处理XPath</a> <span class="text-muted">旦莫</span> <a class="tag" taget="_blank" href="/search/Python%E8%BF%9B%E9%98%B6/1.htm">Python进阶</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>目录1.环境准备1.1安装lxml1.2验证安装2.XPath基础2.1什么是XPath?2.2XPath语法2.3示例XML文档3.使用lxml解析XML3.1解析XML文档3.2查看解析结果4.XPath查询4.1基本路径查询4.2使用属性查询4.3查询多个节点5.XPath的高级用法5.1使用逻辑运算符5.2使用函数6.实战案例6.1从网页抓取数据6.1.1安装Requests库6.1.2代</div> </li> <li><a href="/article/1835503965563875328.htm" title="python os.environ_python os.environ 读取和设置环境变量" target="_blank">python os.environ_python os.environ 读取和设置环境变量</a> <span class="text-muted">weixin_39605414</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/os.environ/1.htm">os.environ</a> <div>>>>importos>>>os.environ.keys()['LC_NUMERIC','GOPATH','GOROOT','GOBIN','LESSOPEN','SSH_CLIENT','LOGNAME','USER','HOME','LC_PAPER','PATH','DISPLAY','LANG','TERM','SHELL','J2REDIR','LC_MONETARY','QT_QPA</div> </li> <li><a href="/article/1835497664922349568.htm" title="使用Faiss进行高效相似度搜索" target="_blank">使用Faiss进行高效相似度搜索</a> <span class="text-muted">llzwxh888</span> <a class="tag" taget="_blank" href="/search/faiss/1.htm">faiss</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>在现代AI应用中,快速和高效的相似度搜索是至关重要的。Faiss(FacebookAISimilaritySearch)是一个专门用于快速相似度搜索和聚类的库,特别适用于高维向量。本文将介绍如何使用Faiss来进行相似度搜索,并结合Python代码演示其基本用法。什么是Faiss?Faiss是一个由FacebookAIResearch团队开发的开源库,主要用于高维向量的相似性搜索和聚类。Faiss</div> </li> <li><a href="/article/1835497665853485056.htm" title="python是什么意思中文-在python中%是什么意思" target="_blank">python是什么意思中文-在python中%是什么意思</a> <span class="text-muted">编程大乐趣</span> <div>Python中%有两种:1、数值运算:%代表取模,返回除法的余数。如:>>>7%212、%操作符(字符串格式化,stringformatting),说明如下:%[(name)][flags][width].[precision]typecode(name)为命名flags可以有+,-,''或0。+表示右对齐。-表示左对齐。''为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填</div> </li> <li><a href="/article/1835495644123459584.htm" title="Day1笔记-Python简介&标识符和关键字&输入输出" target="_blank">Day1笔记-Python简介&标识符和关键字&输入输出</a> <span class="text-muted">~在杰难逃~</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a> <div>大家好,从今天开始呢,杰哥开展一个新的专栏,当然,数据分析部分也会不定时更新的,这个新的专栏主要是讲解一些Python的基础语法和知识,帮助0基础的小伙伴入门和学习Python,感兴趣的小伙伴可以开始认真学习啦!一、Python简介【了解】1.计算机工作原理编程语言就是用来定义计算机程序的形式语言。我们通过编程语言来编写程序代码,再通过语言处理程序执行向计算机发送指令,让计算机完成对应的工作,编程</div> </li> <li><a href="/article/1835495517774245888.htm" title="python八股文面试题分享及解析(1)" target="_blank">python八股文面试题分享及解析(1)</a> <span class="text-muted">Shawn________</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>#1.'''a=1b=2不用中间变量交换a和b'''#1.a=1b=2a,b=b,aprint(a)print(b)结果:21#2.ll=[]foriinrange(3):ll.append({'num':i})print(11)结果:#[{'num':0},{'num':1},{'num':2}]#3.kk=[]a={'num':0}foriinrange(3):#0,12#可变类型,不仅仅改变</div> </li> <li><a href="/article/1835493753557708800.htm" title="每日算法&面试题,大厂特训二十八天——第二十天(树)" target="_blank">每日算法&面试题,大厂特训二十八天——第二十天(树)</a> <span class="text-muted">肥学</span> <a class="tag" taget="_blank" href="/search/%E2%9A%A1%E7%AE%97%E6%B3%95%E9%A2%98%E2%9A%A1%E9%9D%A2%E8%AF%95%E9%A2%98%E6%AF%8F%E6%97%A5%E7%B2%BE%E8%BF%9B/1.htm">⚡算法题⚡面试题每日精进</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>目录标题导读算法特训二十八天面试题点击直接资料领取导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!特别介绍小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章</div> </li> <li><a href="/article/1835493626688401408.htm" title="Python快速入门 —— 第三节:类与对象" target="_blank">Python快速入门 —— 第三节:类与对象</a> <span class="text-muted">孤华暗香</span> <a class="tag" taget="_blank" href="/search/Python%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/1.htm">Python快速入门</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>第三节:类与对象目标:了解面向对象编程的基础概念,并学会如何定义类和创建对象。内容:类与对象:定义类:class关键字。类的构造函数:__init__()。类的属性和方法。对象的创建与使用。示例:classStudent:def__init__(self,name,age,major):self.name&#</div> </li> <li><a href="/article/1835492869062881280.htm" title="pyecharts——绘制柱形图折线图" target="_blank">pyecharts——绘制柱形图折线图</a> <span class="text-muted">2224070247</span> <a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">数据可视化</a> <div>一、pyecharts概述自2013年6月百度EFE(ExcellentFrontEnd)数据可视化团队研发的ECharts1.0发布到GitHub网站以来,ECharts一直备受业界权威的关注并获得广泛好评,成为目前成熟且流行的数据可视化图表工具,被应用到诸多数据可视化的开发领域。Python作为数据分析领域最受欢迎的语言,也加入ECharts的使用行列,并研发出方便Python开发者使用的数据</div> </li> <li><a href="/article/1835491859351302144.htm" title="Python 实现图片裁剪(附代码) | Python工具" target="_blank">Python 实现图片裁剪(附代码) | Python工具</a> <span class="text-muted">剑客阿良_ALiang</span> <div>前言本文提供将图片按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义。环境依赖ffmpeg环境安装,可以参考我的另一篇文章:windowsffmpeg安装部署_阿良的博客-CSDN博客本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中。ffmpy安装:pipinstallffmpy-ihttps://pypi.douban.com/simple代码不废话了,上代码</div> </li> <li><a href="/article/1835491353451130880.htm" title="【华为OD技术面试真题 - 技术面】- python八股文真题题库(4)" target="_blank">【华为OD技术面试真题 - 技术面】- python八股文真题题库(4)</a> <span class="text-muted">算法大师</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选**1.Python中的`with`**用途和功能自动资源管理示例:文件操作上下文管理协议示例代码工作流程解析优点2.\_\_new\_\_和**\_\_init\_\_**区别__new____init__区别总结3.**切片(Slicing)操作**基本切片语法</div> </li> <li><a href="/article/1835490974911000576.htm" title="python os 环境变量" target="_blank">python os 环境变量</a> <span class="text-muted">CV矿工</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</a> <div>环境变量:环境变量是程序和操作系统之间的通信方式。有些字符不宜明文写进代码里,比如数据库密码,个人账户密码,如果写进自己本机的环境变量里,程序用的时候通过os.environ.get()取出来就行了。os.environ是一个环境变量的字典。环境变量的相关操作importos"""设置/修改环境变量:os.environ[‘环境变量名称’]=‘环境变量值’#其中key和value均为string类</div> </li> <li><a href="/article/1835490218845761536.htm" title="Python爬虫解析工具之xpath使用详解" target="_blank">Python爬虫解析工具之xpath使用详解</a> <span class="text-muted">eqa11</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录Python爬虫解析工具之xpath使用详解一、引言二、环境准备1、插件安装2、依赖库安装三、xpath语法详解1、路径表达式2、通配符3、谓语4、常用函数四、xpath在Python代码中的使用1、文档树的创建2、使用xpath表达式3、获取元素内容和属性五、总结Python爬虫解析工具之xpath使用详解一、引言在Python爬虫开发中,数据提取是一个至关重要的环节。xpath作为一门</div> </li> <li><a href="/article/1835483915071090688.htm" title="【华为OD技术面试真题 - 技术面】- python八股文真题题库(1)" target="_blank">【华为OD技术面试真题 - 技术面】- python八股文真题题库(1)</a> <span class="text-muted">算法大师</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选1.数据预处理流程数据预处理的主要步骤工具和库2.介绍线性回归、逻辑回归模型线性回归(LinearRegression)模型形式:关键点:逻辑回归(LogisticRegression)模型形式:关键点:参数估计与评估:3.python浅拷贝及深拷贝浅拷贝(Shal</div> </li> <li><a href="/article/1835483159630802944.htm" title="nosql数据库技术与应用知识点" target="_blank">nosql数据库技术与应用知识点</a> <span class="text-muted">皆过客,揽星河</span> <a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a><a class="tag" taget="_blank" href="/search/nosql/1.htm">nosql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">非关系型数据库</a> <div>Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)</div> </li> <li><a href="/article/1835481269690003456.htm" title="《Python数据分析实战终极指南》" target="_blank">《Python数据分析实战终极指南》</a> <span class="text-muted">xjt921122</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>对于分析师来说,大家在学习Python数据分析的路上,多多少少都遇到过很多大坑**,有关于技能和思维的**:Excel已经没办法处理现有的数据量了,应该学Python吗?找了一大堆Python和Pandas的资料来学习,为什么自己动手就懵了?跟着比赛类公开数据分析案例练了很久,为什么当自己面对数据需求还是只会数据处理而没有分析思路?学了对比、细分、聚类分析,也会用PEST、波特五力这类分析法,为啥</div> </li> <li><a href="/article/1835477362700021760.htm" title="Python中深拷贝与浅拷贝的区别" target="_blank">Python中深拷贝与浅拷贝的区别</a> <span class="text-muted">yuxiaoyu.</span> <div>转自:http://blog.csdn.net/u014745194/article/details/70271868定义:在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复</div> </li> <li><a href="/article/1835476983614631936.htm" title="Python开发常用的三方模块如下:" target="_blank">Python开发常用的三方模块如下:</a> <span class="text-muted">换个网名有点难</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Python是一门功能强大的编程语言,拥有丰富的第三方库,这些库为开发者提供了极大的便利。以下是100个常用的Python库,涵盖了多个领域:1、NumPy,用于科学计算的基础库。2、Pandas,提供数据结构和数据分析工具。3、Matplotlib,一个绘图库。4、Scikit-learn,机器学习库。5、SciPy,用于数学、科学和工程的库。6、TensorFlow,由Google开发的开源机</div> </li> <li><a href="/article/1835473704432267264.htm" title="Python编译器" target="_blank">Python编译器</a> <span class="text-muted">鹿鹿~</span> <a class="tag" taget="_blank" href="/search/Python%E7%BC%96%E8%AF%91%E5%99%A8/1.htm">Python编译器</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>嘿嘿嘿我又来了啊有些小盆友可能不知道Python其实是有编译器的,也就是PyCharm。你们可能会问到这个是干嘛的又不可以吃也不可以穿好像没有什么用,其实你还说对了这个还真的不可以吃也不可以穿,但是它用来干嘛的呢。用来编译你所打出的代码进行运行(可能这里说的有点不对但是只是个人认为)现在我们来说说PyCharm是用来干嘛的。PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Pyt</div> </li> <li><a href="/article/1835471437754888192.htm" title="一文掌握python面向对象魔术方法(二)" target="_blank">一文掌握python面向对象魔术方法(二)</a> <span class="text-muted">程序员neil</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>接上篇:一文掌握python面向对象魔术方法(一)-CSDN博客目录六、迭代和序列化:1、__iter__(self):定义迭代器,使得类可以被for循环迭代。2、__getitem__(self,key):定义索引操作,如obj[key]。3、__setitem__(self,key,value):定义赋值操作,如obj[key]=value。4、__delitem__(self,key):定义</div> </li> <li><a href="/article/1835471185589137408.htm" title="一文掌握python常用的list(列表)操作" target="_blank">一文掌握python常用的list(列表)操作</a> <span class="text-muted">程序员neil</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>目录一、创建列表1.直接创建列表:2.使用list()构造器3.使用列表推导式4.创建空列表二、访问列表元素1.列表支持通过索引访问元素,索引从0开始:2.还可以使用切片操作访问列表的一部分:三、修改列表元素四、添加元素1.append():在末尾添加元素2.insert():在指定位置插入元素五、删除元素1.del:删除指定位置的元素2.remove():删除指定值的第一个匹配项3.pop():</div> </li> <li><a href="/article/1835469798838988800.htm" title="Python实现简单的机器学习算法" target="_blank">Python实现简单的机器学习算法</a> <span class="text-muted">master_chenchengg</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%8A%9E%E5%85%AC%E6%95%88%E7%8E%87/1.htm">办公效率</a><a class="tag" taget="_blank" href="/search/python%E5%BC%80%E5%8F%91/1.htm">python开发</a><a class="tag" taget="_blank" href="/search/IT/1.htm">IT</a> <div>Python实现简单的机器学习算法开篇:初探机器学习的奇妙之旅搭建环境:一切从安装开始必备工具箱第一步:安装Anaconda和JupyterNotebook小贴士:如何配置Python环境变量算法初体验:从零开始的Python机器学习线性回归:让数据说话数据准备:从哪里找数据编码实战:Python实现线性回归模型评估:如何判断模型好坏逻辑回归:从分类开始理论入门:什么是逻辑回归代码实现:使用skl</div> </li> <li><a href="/article/1835465134710026240.htm" title="python中的深拷贝与浅拷贝" target="_blank">python中的深拷贝与浅拷贝</a> <span class="text-muted">anshejd70787</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>深拷贝和浅拷贝浅拷贝的时候,修改原来的对象,浅拷贝的对象不会发生改变。1、对象的赋值对象的赋值实际上是对象之间的引用:当创建一个对象,然后将这个对象赋值给另外一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用。当对对象做赋值或者是参数传递或者作为返回值的时候,总是传递原始对象的引用,而不是一个副本。如下所示:>>>aList=["kel","abc",123]>>>bLis</div> </li> <li><a href="/article/52.htm" title="解读Servlet原理篇二---GenericServlet与HttpServlet" target="_blank">解读Servlet原理篇二---GenericServlet与HttpServlet</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HttpServlet/1.htm">HttpServlet</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%90%86/1.htm">源理</a><a class="tag" taget="_blank" href="/search/GenericService/1.htm">GenericService</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81/1.htm">源码</a> <div>在上一篇《解读Servlet原理篇一》中提到,要实现javax.servlet.Servlet接口(即写自己的Servlet应用),你可以写一个继承自javax.servlet.GenericServletr的generic Servlet ,也可以写一个继承自java.servlet.http.HttpServlet的HTTP Servlet(这就是为什么我们自定义的Servlet通常是exte</div> </li> <li><a href="/article/179.htm" title="MySQL性能优化" target="_blank">MySQL性能优化</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>        性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间。性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等。本文介绍方法的主要有:         a.优化查询         b.优化数据库结构   </div> </li> <li><a href="/article/306.htm" title="ThreadPool定时重试" target="_blank">ThreadPool定时重试</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ThreadPool/1.htm">ThreadPool</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a><a class="tag" taget="_blank" href="/search/timertask/1.htm">timertask</a> <div>项目需要当某事件触发时,执行http请求任务,失败时需要有重试机制,并根据失败次数的增加,重试间隔也相应增加,任务可能并发。 由于是耗时任务,首先考虑的就是用线程来实现,并且为了节约资源,因而选择线程池。 为了解决不定间隔的重试,选择Timer和TimerTask来完成 package threadpool; public class ThreadPoolTest { </div> </li> <li><a href="/article/433.htm" title="Oracle 查看数据库的连接情况" target="_blank">Oracle 查看数据库的连接情况</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/oracle+%E8%BF%9E%E6%8E%A5/1.htm">oracle 连接</a> <div>首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表。 select * from dict where table_name like '%SESSION%'; 就可以查出一些表,然后根据这些表就可以获得会话信息 select sid,serial#,status,username,schemaname,osuser,terminal,ma</div> </li> <li><a href="/article/560.htm" title="类的继承" target="_blank">类的继承</a> <span class="text-muted">朱辉辉33</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>类的继承可以提高代码的重用行,减少冗余代码;还能提高代码的扩展性。Java继承的关键字是extends 格式:public class 类名(子类)extends 类名(父类){ } 子类可以继承到父类所有的属性和普通方法,但不能继承构造方法。且子类可以直接使用父类的public和 protected属性,但要使用private属性仍需通过调用。 子类的方法可以重写,但必须和父类的返回值类</div> </li> <li><a href="/article/687.htm" title="android 悬浮窗特效" target="_blank">android 悬浮窗特效</a> <span class="text-muted">肆无忌惮_</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>最近在开发项目的时候需要做一个悬浮层的动画,类似于支付宝掉钱动画。但是区别在于,需求是浮出一个窗口,之后边缩放边位移至屏幕右下角标签处。效果图如下:   一开始考虑用自定义View来做。后来发现开线程让其移动很卡,ListView+动画也没法精确定位到目标点。   后来想利用Dialog的dismiss动画来完成。   自定义一个Dialog后,在styl</div> </li> <li><a href="/article/814.htm" title="hadoop伪分布式搭建" target="_blank">hadoop伪分布式搭建</a> <span class="text-muted">林鹤霄</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>要修改4个文件    1: vim hadoop-env.sh  第九行    2: vim core-site.xml            <configuration>     &n</div> </li> <li><a href="/article/941.htm" title="gdb调试命令" target="_blank">gdb调试命令</a> <span class="text-muted">aigo</span> <a class="tag" taget="_blank" href="/search/gdb/1.htm">gdb</a> <div>原文:http://blog.csdn.net/hanchaoman/article/details/5517362   一、GDB常用命令简介   r run 运行.程序还没有运行前使用 c             cuntinue </div> </li> <li><a href="/article/1068.htm" title="Socket编程的HelloWorld实例" target="_blank">Socket编程的HelloWorld实例</a> <span class="text-muted">alleni123</span> <a class="tag" taget="_blank" href="/search/socket/1.htm">socket</a> <div>public class Client { public static void main(String[] args) { Client c=new Client(); c.receiveMessage(); } public void receiveMessage(){ Socket s=null; BufferedRea</div> </li> <li><a href="/article/1195.htm" title="线程同步和异步" target="_blank">线程同步和异步</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5/1.htm">线程同步</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E6%AD%A5/1.htm">异步</a> <div>多线程和同步 : 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法   多线程和异步:多线程可以做不同的事情,涉及到线程通知     &</div> </li> <li><a href="/article/1322.htm" title="JSP中文乱码分析" target="_blank">JSP中文乱码分析</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/1.htm">中文乱码</a> <div>        在JSP的开发过程中,经常出现中文乱码的问题。         首先了解一下Java中文问题的由来:         Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,</div> </li> <li><a href="/article/1449.htm" title="js实现页面跳转重定向的几种方式" target="_blank">js实现页面跳转重定向的几种方式</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E5%AE%9A%E5%90%91/1.htm">重定向</a> <div>        js实现页面跳转重定向有如下几种方式: 一.window.location.href <script language="javascript"type="text/javascript"> window.location.href="http://www.baidu.c</div> </li> <li><a href="/article/1576.htm" title="【Struts2三】Struts2 Action转发类型" target="_blank">【Struts2三】Struts2 Action转发类型</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/struts2/1.htm">struts2</a> <div> 在【Struts2一】 Struts Hello World http://bit1129.iteye.com/blog/2109365中配置了一个简单的Action,配置如下   <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configurat</div> </li> <li><a href="/article/1703.htm" title="【HBase十一】Java API操作HBase" target="_blank">【HBase十一】Java API操作HBase</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a> <div>Admin类的主要方法注释:   1. 创建表 /** * Creates a new table. Synchronous operation. * * @param desc table descriptor for table * @throws IllegalArgumentException if the table name is res</div> </li> <li><a href="/article/1830.htm" title="nginx gzip" target="_blank">nginx gzip</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/nginx+gzip/1.htm">nginx gzip</a> <div>Nginx GZip 压缩 Nginx GZip 模块文档详见:http://wiki.nginx.org/HttpGzipModule 常用配置片段如下: gzip on; gzip_comp_level 2; # 压缩比例,比例越大,压缩时间越长。默认是1 gzip_types text/css text/javascript; # 哪些文件可以被压缩 gzip_disable &q</div> </li> <li><a href="/article/1957.htm" title="java-7.微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如 h1 , h2 ,判断这俩个链表是否相交" target="_blank">java-7.微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如 h1 , h2 ,判断这俩个链表是否相交</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class LinkListTest { /** * we deal with two main missions: * * A. * 1.we create two joined-List(both have no loop) * 2.whether list1 and list2 join * 3.print the join</div> </li> <li><a href="/article/2084.htm" title="Spring源码学习-JdbcTemplate batchUpdate批量操作" target="_blank">Spring源码学习-JdbcTemplate batchUpdate批量操作</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>Spring JdbcTemplate的batch操作最后还是利用了JDBC提供的方法,Spring只是做了一下改造和封装 JDBC的batch操作: String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; </div> </li> <li><a href="/article/2211.htm" title="[JWFD开源工作流]大规模拓扑矩阵存储结构最新进展" target="_blank">[JWFD开源工作流]大规模拓扑矩阵存储结构最新进展</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C%E6%B5%81/1.htm">工作流</a> <div>    生成和创建类已经完成,构造一个100万个元素的矩阵模型,存储空间只有11M大,请大家参考我在博客园上面的文档"构造下一代工作流存储结构的尝试",更加相信的设计和代码将陆续推出.........     竞争对手的能力也很强.......,我相信..你们一定能够先于我们推出大规模拓扑扫描和分析系统的....</div> </li> <li><a href="/article/2338.htm" title="base64编码和url编码" target="_blank">base64编码和url编码</a> <span class="text-muted">cuityang</span> <a class="tag" taget="_blank" href="/search/base64/1.htm">base64</a><a class="tag" taget="_blank" href="/search/url/1.htm">url</a> <div>import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringWriter; import java.io.UnsupportedEncodingException; </div> </li> <li><a href="/article/2465.htm" title="web应用集群Session保持" target="_blank">web应用集群Session保持</a> <span class="text-muted">dalan_123</span> <a class="tag" taget="_blank" href="/search/session/1.htm">session</a> <div>关于使用 memcached 或redis 存储 session ,以及使用 terracotta 服务器共享。建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富,不只是缓存 session,还可以做其他用途,一举几得啊。1、使用 filter 方法存储这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简</div> </li> <li><a href="/article/2719.htm" title="Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']" target="_blank">Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>    public function getMinLimit () {        $sql = "...";        $result = yii::app()->db->createCo</div> </li> <li><a href="/article/2846.htm" title="solr StatsComponent(聚合统计)" target="_blank">solr StatsComponent(聚合统计)</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/solr%E8%81%9A%E5%90%88%E6%9F%A5%E8%AF%A2/1.htm">solr聚合查询</a><a class="tag" taget="_blank" href="/search/solr+stats/1.htm">solr stats</a> <div>StatsComponent 转载请出自出处:http://eksliang.iteye.com/blog/2169134 http://eksliang.iteye.com/ 一、概述        Solr可以利用StatsComponent 实现数据库的聚合统计查询,也就是min、max、avg、count、sum的功能   二、参数</div> </li> <li><a href="/article/2973.htm" title="百度一道面试题" target="_blank">百度一道面试题</a> <span class="text-muted">greemranqq</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6%E9%9D%A2%E8%AF%95/1.htm">百度面试</a><a class="tag" taget="_blank" href="/search/%E5%AF%BB%E6%89%BE%E5%A5%87%E6%95%B0%E7%AE%97%E6%B3%95/1.htm">寻找奇数算法</a><a class="tag" taget="_blank" href="/search/bitmap+%E7%AE%97%E6%B3%95/1.htm">bitmap 算法</a> <div>那天看朋友提了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5}  找出出现次数为奇数的数字.   我这里复制的是原话,当然顺序是不一定的,很多拿到题目第一反应就是用map,当然可以解决,但是效率不高。   还有人觉得应该用算法xxx,我是没想到用啥算法好...!   还有觉得应该先排序...   还有觉</div> </li> <li><a href="/article/3100.htm" title="Spring之在开发中使用SpringJDBC" target="_blank">Spring之在开发中使用SpringJDBC</a> <span class="text-muted">ihuning</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>  在实际开发中使用SpringJDBC有两种方式:   1. 在Dao中添加属性JdbcTemplate并用Spring注入;     JdbcTemplate类被设计成为线程安全的,所以可以在IOC 容器中声明它的单个实例,并将这个实例注入到所有的 DAO 实例中。JdbcTemplate也利用了Java 1.5 的特定(自动装箱,泛型,可变长度</div> </li> <li><a href="/article/3227.htm" title="JSON API 1.0 核心开发者自述 | 你所不知道的那些技术细节" target="_blank">JSON API 1.0 核心开发者自述 | 你所不知道的那些技术细节</a> <span class="text-muted">justjavac</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>2013年5月,Yehuda Katz 完成了JSON API(英文,中文) 技术规范的初稿。事情就发生在 RailsConf 之后,在那次会议上他和 Steve Klabnik 就 JSON 雏形的技术细节相聊甚欢。在沟通单一 Rails 服务器库—— ActiveModel::Serializers 和单一 JavaScript 客户端库——&</div> </li> <li><a href="/article/3354.htm" title="网站项目建设流程概述" target="_blank">网站项目建设流程概述</a> <span class="text-muted">macroli</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>一.概念 网站项目管理就是根据特定的规范、在预算范围内、按时完成的网站开发任务。 二.需求分析 项目立项   我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项。较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员。项目实行项目经理制。 客户的需求说明书   第一步是需</div> </li> <li><a href="/article/3481.htm" title="AngularJs 三目运算 表达式判断" target="_blank">AngularJs 三目运算 表达式判断</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/%E4%BC%97%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">众观千象</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a> <div>事件回顾:由于需要修改同一个模板,里面包含2个不同的内容,第一个里面使用的时间差和第二个里面名称不一样,其他过滤器,内容都大同小异。希望杜绝If这样比较傻的来判断if-show or not,继续追究其源码。 var b = "{{", a = "}}"; this.startSymbol = function(a) { </div> </li> <li><a href="/article/3608.htm" title="Spark算子:统计RDD分区中的元素及数量" target="_blank">Spark算子:统计RDD分区中的元素及数量</a> <span class="text-muted">superlxw1234</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/spark%E7%AE%97%E5%AD%90/1.htm">spark算子</a><a class="tag" taget="_blank" href="/search/Spark+RDD%E5%88%86%E5%8C%BA%E5%85%83%E7%B4%A0/1.htm">Spark RDD分区元素</a> <div>关键字:Spark算子、Spark RDD分区、Spark RDD分区元素数量     Spark RDD是被分区的,在生成RDD时候,一般可以指定分区的数量,如果不指定分区数量,当RDD从集合创建时候,则默认为该程序所分配到的资源的CPU核数,如果是从HDFS文件创建,默认为文件的Block数。   可以利用RDD的mapPartitionsWithInd</div> </li> <li><a href="/article/3735.htm" title="Spring 3.2.x将于2016年12月31日停止支持" target="_blank">Spring 3.2.x将于2016年12月31日停止支持</a> <span class="text-muted">wiselyman</span> <a class="tag" taget="_blank" href="/search/Spring+3/1.htm">Spring 3</a> <div>              Spring 团队公布在2016年12月31日停止对Spring Framework 3.2.x(包含tomcat 6.x)的支持。在此之前spring团队将持续发布3.2.x的维护版本。          请大家及时准备及时升级到Spring </div> </li> <li><a href="/article/3862.htm" title="fis纯前端解决方案fis-pure" target="_blank">fis纯前端解决方案fis-pure</a> <span class="text-muted">zccst</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>作者:zccst FIS通过插件扩展可以完美的支持模块化的前端开发方案,我们通过FIS的二次封装能力,封装了一个功能完备的纯前端模块化方案pure。 1,fis-pure的安装 $ fis install -g fis-pure $ pure -v 0.1.4 2,下载demo到本地 git clone https://github.com/hefangshi/f</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>