pyquery的节点操作本质上和jquery一样,一个pyquery对象就是一个容器,容器中的元素就是相关的所有标签,操作pyquery对象会直接操作pyquery中的所有标签。
通过html页面创建pyquery对象
pyquery(html页面)
通过选择器选中标签
pyquery对象(css选择器) - 获取选择器选中的标签
pyquery对象.find(css选择器) - 获取选择器选中的标签
获取标签内容和属性
pyquery对象.text()/pyquery对象.html()
pyquery对象.attr(属性名)
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(执行的任务)