pyquery、xpath和线程池

tech2022-07-12  166

pyquery的使用

​ pyquery的节点操作本质上和jquery一样,一个pyquery对象就是一个容器,容器中的元素就是相关的所有标签,操作pyquery对象会直接操作pyquery中的所有标签。

通过html页面创建pyquery对象

pyquery(html页面)

通过选择器选中标签

pyquery对象(css选择器) - 获取选择器选中的标签

pyquery对象.find(css选择器) - 获取选择器选中的标签

获取标签内容和属性

pyquery对象.text()/pyquery对象.html()

pyquery对象.attr(属性名)

xpath数据解析

​ xpath是专门用来解析xml数据格式的数据的(采用直接获取节点的方式解析数据)

xml数据

xml和json一样都属于数据格式,是用来进行数据传递的数据格式。json的有点在于轻量级,占带宽小;xml老牌、传统,数据加密方便

xml数据格式:和html一样通过节点保存数据

节点 - <节点名></节点名>

根节点 - 最外层的节点

属性 - 和html标签属性一样

内容 - 节点中间的数据

xpath数据解析 - 通过路径表达式在xml文件中选取节点

python使用xpath语法解析xml数据需要第三方库:lxml

创建树获取根节点

etree,XML(xml数据)

使用xpath获取指定节点

节点对象.xpath(路径)

路径:

节点名称 - 在当前节点中获取指定名称的子节点

节点对象.xpath(节点名称)

/ - 从根节点开始获取节点(只能写绝对路径)

注意:根节点不会因为xpath作用的节点变化而变化

节点对象.xpath(/绝对路径)

// - 从任意位置开始获取

节点对象.xpath(//路径)

./ - 获取当前节点下的子节点

节点对象.xpath(./路径)

…/ - 获取当前节点的父节点的子节点

节点对象.xpath(…/路径)

@ - 选取属性

节点对象.xpath(节点/@属性) - 获取指定节点中的所有指定属性值

节点对象.xpath(节点[@属性]) - 获取所有有指定属性的的指定节点

节点对象.xpath(节点[@属性=属性值]) - 获取所有指定属性是指定属性值的指定节点

谓词

[N] - 获取第N个节点(指定标签下有多个指定标签的时候才有意义)

[last()] - 获取最后一个节点

[last()-N] - 获取倒数第N+1个节点

[position<N] - 获取前N-1个节点

[@属性名] - 有指定属性的节点

[@属性名=属性值] - 指定属性是指定值的节点

[节点条件] - 子节点的内容满足指定条件的节点

通配符

*表示任何(任何标签或任何属性)

选取若干路径

路径1|路径2|路径3|… - 选中所有路径对应的节点

线程池

线程池:自动创建线程并自动安排每个线程的任务

创建线程对象

ThreadPool(线程数) - 创建线程池对象,并设置线程数(线程由线程池自动创建)

确定任务对应的函数

创建任务列表

创建任务对象:makeRequests(任务对应的函数,任务函数调用时传递的实参列表)

把每个任务添加到线程池中

线程池对象.putRequest(执行的任务)

最新回复(0)