PyQuery解析器|青训营笔记

103 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的第12天。

每个网页都有一定的特殊结构和层级关系,很多节点都有id或class作为区分,我们可以借助它们的结构和属性来提取信息。

1初始化

解析HTML文本时,要先将其初始化为一个pyquery对象。初始化的参数可以是字符串形式的传递;还可以传入网页的URL,只需要指定参数的url即可;也可以传递本地的文件名,参数指定为filename即可。

2查找节点

2.1子节点

查找子节点需要用到find方法,传入的参数是CSS选择器。

find的查找范围是节点的所有子孙节点,如果只想查找子节点,可以用children方法。

如果要筛选所有子节点中符合条件的节点,比如想筛选出子节点中class为active的节点,可以向 children 方法传入CSS 选择器.active。

2.2父节点

用parent方法来获取某个节点的父节点。用parents方法来获取某个节点的祖先节点。筛选某个祖先节点,则向parents 方法传入CSS 选择器。

2.3兄弟节点

要获取兄弟节点,可以使用 siblings 方法。要筛选某个兄弟节点,依然可以用siblings方法传入CSS选择器。

3遍历

pyquery的选择结果,可能是多个节点,可能是单个节点,都是pyquery类型,并没有返回列表。

对于单个节点来说,可以直接打印输出,也可以直接转成字符串。对于有多个节点的结果,就需要用遍历来获取。

4获取信息

最终目的是提取节点所包含的信息

4.1获取属性

调用attr 方法来获取属性,也可以通过调用attr 属性来获取属性值。

4.2获取文本

获取其内部文本可以调用text方法来实现。如果你想要获取这个节点内部的HTML文本,就要用html方法。

5节点操作

pyquery 提供了一系列方法来对节点进行动态修改,比如:为某个节点添加一个class,移除某个节点。

除了操作class这个属性外,也可以用attr方法对属性进行操作,还可以用text和html方法来改变节点内部的内容。remove 方法就是移除。还有很多其他节点操作的方法,比如append、empty和prepend 等方法。

6伪类选择器

CSS 选择器强大很重要的原因,就是它支持多种多样的伪类选择器,例如选择第一个节点、最后一个节点、奇偶数节点、包含某一文本的节点等。

个人总结

本文重点介绍了如何查找子节点、父节点、兄弟节点,如何遍历、获取属性和文本信息,并介绍了节点操作和伪类选择器。