之前学习了正则匹配-提取网络有用信息。正则匹配的一大特点是速度快,效率高,但是难度也是最大的。所以这次学习了xpath,虽然效率比不上正则匹配,但是难度却小很多。
xpath可以在XML文档中查找信息,以及遍历元素的属性。xpath使用的使用方法为:先将获取的HTML转化为XML,然后通过xpath查找节点元素。XML为可扩展标记语言,目的,传输和存储数据。HTML为超文本标记语言,目的,更好地显示数据。HTML DOM为文档对象,通过它可以访问,HTML的所有元素,包括属性和文本。
xpath是通过等级关系来寻找信息的,多以我们首先要了解节点关系:1.父节点;2.子节点:元素可以有0个或多个子节点;3.同胞(兄弟)节点:拥有相同的父节点;4.先辈节点:父节点或父节点以上的全部节点;5.后代节点:子节点或子节点以下的全部节点。xpath采取的是路径表达式,其步骤为:1.选取节点:/:从根节点选取;//:从匹配选择的当前节点选取,不考虑位置;.:选取当前节点;..:选取当前节点的父节点;@:选取属性。2.选取未知节点:*:匹配任何元素节点;@*:匹配任何属性节点;node():匹配任何类型的节点。
lxml库是解析HTML/XML,需要手动安装。其有如下方法:1.通过xpath获取标签信息(li),如:html1=etree.parse('./shuihu.html');result1=html1.xpath('//li')#打印<li>标签的元素集合。2.通过xpath获取所有li标签的属性,如:result2=html.xpath('//li/@class')。3.获取<li>标签下href为wusong.html的<a>标签,如:result3=html.xpath('//li/a[@href="wusong.html"]')。4.获取最后一个<li>的<a>的herf,如:result4=html.xpath('//li[last()]/a/@href')。
这次的项目为爬取任意贴吧,任意内容。要求为:1.将图片存储一个路径;2.视频存储一个路径;3.其他存储一个路径。