Python pyquery
pyquery
一个像 jQuery 一样的解析库
初始化
字符串初始化
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
文件初始化
from pyquery import PyQuery as pq
doc = pq(filename='')
URL 初始化
from pyquery import PyQuery as pq
doc = pq(url='https://cnblogs.com/dbf-')
选择器
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
doc('#i1') # id 选择器
doc('.c1') # class 选择器
doc('div') # 标签选择器
doc('#i1, #i2') # 组合选择器 id==i1 或 id==i2
doc('#i1.c1') # 组合选择器 id==i1 且 id==i2
doc('#i1 .c1') # 层级选择器 id==i1 下所有 class==c1 的标签
doc('div > .c1') # 层级选择器 id==i1 下一层 class==c1 的标签
伪类选择器
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
doc('p:first-child') # p 标签的第一个子标签
doc('p:last-child') # p 标签的最后一个子标签
doc('p:nth-child(2)') # p 标签的第二个子标签
doc('p:gt(2)') # p 标签的第三个之后的子标签
其他选择器:https://www.w3school.com.cn/cssref/css_selectors.asp
查找元素
子孙元素
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
doc('#i1').find('.c1') # == doc('#i1 .c1') 获取 id==i1 元素的子孙元素
doc('#i1').children('.c1') # == doc('#i1 > .c1') 获取 id==i1 元素的子元素
祖先元素
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
doc('#i1').parent() # 获取 id==i1 元素的父元素
doc('#i1').parents() # 获取 id==i1 元素的所有祖先元素
doc('#i1').parents('.c1') # 获取 id==i1 元素的所有 class==c1 的祖先元素
兄弟元素
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
doc('#i1').parent() # 获取 id==i1 元素的父元素
doc('#i1').parents() # 获取 id==i1 元素的所有祖先元素
doc('#i1').parents('.c1') # 获取 id==i1 元素的所有 class==c1 的祖先元素
.items()
返回一个生成器
获取信息
属性
通过属性名获取属性
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
doc('#i1').attr('href')
doc('#i1').attr.href
内容
通过 .text()
可以获取标签内文本
通过 .html()
可以获取标签内 html
DOM 操作
addClass() & removeClass()
通过 addClass()
& removeClass()
可以为选中元素添加或删除 class
attr & css
通过 attr()
& css()
可以为选中元素添加、修改 attr、css (style 属性)
from pyquery import PyQuery as pq
html = ''
doc = pq(html)
doc('#i1').attr('href')
doc('#i1').attr('href', 'https://cnblogs.com/dbf-')
doc('#i1').css('color', 'red')
remove
通过 remove
可以移除选中的元素