开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:文本采集与数据处理之一中】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15510
文本采集与数据处理之一中
内容介绍
一、 Lxml+Xpath
二、 二、Lxml+Xpath——DOM(文档对象模型)
一、Lxml+Xpath
解析网页得到响应以后来解析。解析的话,讲的是一个组合叫Lxml+Xpath 的方法来解析。
为什么要解析?原理是什么?原理就是先看中间,知道请求得到的响应,得到的内容是一个长的字符串,那么长的字符串是没有结构的处理起来非常麻烦,希望利用一种叫DOM的结构,就是文档对象模型。是一个文档树啊,能够利用文档树的话,在上面找东西就方便,所以Lxml的功能就是将网页解析成文档树。
就像这个原始的网页。然后利用Lxml的这种工具,解析成一个文档树的结构。然后再用Xpath到树上搬东西,像树上有很多果实一样,去摘果实,搬果实。也就是搬那些网页内容Xpath,这就是三者的关系,DOM后面会介绍,有定义,什么叫MDM,有什么样的一些内容,DDM有哪些访问啊,然后在DOM里面哪些操作,在后面会展开来介绍一下。然后对于Lxml是把网页解析成DOM。
Lmxl里的语法在解析器是什么,他就是要用Lxml里面etree做成一个数来构造DOM。然后Lxml里面也有一些属性,就是把网页做成文档树的结构里面的一些属性,比如说里面有tag 就是网页里面的一个标签。有.text,就是标签后面对应的那些文本,然后也有一些方法啊,比如说在里面找东西find ,find all,Lxml本身的有关知识,然后使用Xpath,真正用Lxml只要连成DOM模型就可以,也就是用etreeL把网页变成DOM模型,然后后面直接找tag,找文本,用后面Xpath的方法。
Xpasth是后面重点要学的内容,X path里面内容非常多,重点会介绍几个,
一个是定位就是到树枝上面去搬东西,到底在树枝的哪个地方有东西。所以有几种定位方法,一个是标签定位,标签定位,主要记住tag就是标签的名字,tag就是网页里面的一个标记。都知道这个HTML语言,HTML的全称Hyper text markup标记语言里面就有很多标签标记,Tat有名字叫nodename,nodename里面用的最多的定位的方法,一个是一个单斜杠,表示从根出发去找东西,从树根这出发,然后有双斜杠,双斜杠是表示拟定为一个树枝,然后从这个数值上面所有下面就是说当前下所有的地方去找东西。然后@是给指定一个属性,比如说要那个又圆又粗的那个树枝。要那个弯弯的那个树枝。比较指定这个属性。
这样找东西就比较具体了,@后面主要是指定属性。
Xpath再有定位方法是序列定位。给一个位置关系。上面的单斜杠,双斜杠是从某一个位置出发去找。序列定位已经告诉位置,比如说,[1],那就选取第一个元素。[last()],选最后一个,[last()-1]倒数第二个元素,而且指定的序列位置。
然后再就是轴的一个定位。之间相互的一种上下位关系,比如说当前下面的所有的孩子,当前节点上面所有的parent,父亲,以及自己self等等。这是 Xpath,要来解析网页简介
二、Lxml+Xpath——DOM(文档对象模型)
适用于HTML和XML 文档的应用程序编程,定义文档的逻辑结构,就是文档的逻辑结构,以及访问和操作文档的方式。DOM就是一个文档树。
可以把HTML网页帮他转换成DOM文档树,然后还提供了逻辑结构,也提供了一些访问和操作的方法,所以就可以方便从文档树上面去找东西、摘东西。逻辑结构可以看下面这个系统
整个网页,就是一个document。也就构造这个document的树就是文档对象模型的树。数的树根就是整个document。然面元素结点。那么第一个就是HTM就是整个网页的开始,也可以认为就是代表document就是树根,然后再下面,网页下面一般是两部分。一个主体部分是body,整个网页都在body里面,还有一个head头部信息。就是网页里面的title这些,放在head里面。然后body在下面这个内容,那么比如说有分段,分标题等等就是一个内容,内容之间互相连接,构成了整个网页,里面的body,head然后program一个P等等,都是tag标签节点、标记节点 tag是一个名词的nodename,就是一个元素节点。在某一个tag里面再有class等等,这是属性界定,首先是从属于某个tag,再就是在某一个tag直接显示的文字AABB,这就是文本节点,文本信息,就要抓这些文本信息.请求的时候通过HTTP协议然后反馈到浏览器
要用request里面要模拟一个浏览器的这样访问方式,然后呢,一般看到网页的结构是图上的网页结构,再把左边转换成一个文档树。去查网页的时候看到的是HTML构成的网页内容,通过解析以后,转成要的文档树。对于DOM模型,有两个功能,一个是用于HTML和XML文档的应用程序编程接口,也叫做 API,会提供给各种应用,可以用这个模型,进行行业的一个相关操作
主要是做爬虫,从DOM里面去拿东西,如果是编那个网页程序,就叫web程序,比如说做一个基于浏览器的程序,现在电商里面基本上都是通过浏览器访问的,程序里面如何操作页面,操作页面也要用DOM模型。直接可以用javascript中里面做各种操作,像这样一个应用,研究生就要做这样的一些应用,编比如说文本数据的标注系统,图片的标注系统,要用JS来操作页面
可能知道这个web程序可以分为前端和后端。后端可以用PHP等等去开发,用python也可以开发,前端现在用的最多的就是javascript加速度。就是javascript主要是操作页面的内容,去操作文档对象,所以呢,这个文档对象模型不仅仅是在爬虫里面。在网页前端里面也是非常重要的。然后呢?再一个DOM模型,要定义文档的逻辑结构。以便后面访问和操作这个文档。逻辑结构,也就是定义定义文档的结构是一个节点对象树也就是文档对象模型。然后访问方式访问节点对象树。用javascript可以通过里面的一个函数getElementByID,就是每一个网页里的每一个对象一个文本框,都有个ID,通过ID来操作,那个网页里面一个按钮可以通过ID来调用。
再一个就是操作节点数的操作方式.对象树有属性有方法,比如说属性,有ID属性,Class属性,方法就是行为的,行为有oncick这也是DOM的一个功能,提供访问和操作文档的方式。
后面有一个包,叫C06很强大,主要就是直接调用操作方法,直接调用操作方法,模拟在搜索引擎里面什么模拟,往框子里面输关键词,然后模拟去点击查询按钮,才拿到网页内容,比如说要去在百度上面搜有关的某个主题。
比如大数据主题的所有网页,要抓另外一个主题,就不要人工设,只要通过C06,然后通过这些操作方式ID,click,然后自动化的去进行数据的抓取