from pyquery import PyQuery as pq
url = "https://news.163.com"
# doc = pq(url) # 获取传入获取到的html文档
html = '''
pyquery test
this is test page
'''
doc = pq(html)
# 定位id为baidu的标签
doc("#baidu")
doc('[id="baidu"]')
doc.find("*[id='baidu']")
# 定位class为meta tt的元素
doc(".meta")(".tt")
doc(".meta").filter(".tt")
doc(".meta.tt")
# 定位id为list下的class为meta tt的li下面的第二个a标签的href
doc("#list li.meta.tt a").attr.href
如果定位此标签可以通过此方法定位
doc("#a.b.b")
伪类选择器可以匹配到标签名或属性值为此的元素
# 匹配所有按钮输入元素和按钮元素
d = pq((''))
d(':button')
#
# 匹配所有复选框输入元素
d = PyQuery('')
d('input:checkbox')
#
# 单选框
d = PyQuery('')
d('input:checked')
#
匹配包含指定文本的标签,即使只有一个,可能会返回多个元素,因为会把父标签算进去
doc(":contains(‘bbb’)")
匹配所有禁用标签
d = PyQuery('')
d('input:disabled')
[]
匹配所有不包含其他元素的标签
d = PyQuery('title
')
d(':empty')
[]
按索引匹配
d = PyQuery('')
>>> d('h1:eq(0)')
[]
>>> d('h1:eq(1)')
[]
匹配偶数索引元素
d = PyQuery('')
>>> d('p:even')
[]
匹配奇数索引以及0索引
匹配第一个
d = PyQuery('')
>>> d('p:first')
[]
匹配索引大于指定值的
d = PyQuery('')
>>> d('p:first')
[]
匹配索引小于指定值的
d = PyQuery('')
>>> d('p:first')
[]
参数可以是属性,也可以是元素
>>> from pyquery import PyQuery
>>> d = PyQuery('')
>>> d('.foo:has(".baz")')
[]
>>> d('.foo:has(".foo")')
[]
>>> d('.foo:has(".bar")')
[]
>>> d('.foo:has(div)')
[]
匹配h1-h6标签
>>> from pyquery import PyQuery
>>> d = PyQuery('title
')
>>> d(':header')
[]
匹配所有隐藏input标签
>>> from pyquery import PyQuery
>>> d = PyQuery('')
>>> d('input:hidden')
[]
匹配所有type为image的Input标签
>>> from pyquery import PyQuery
>>> d = PyQuery('')
>>> d('input:image')
[]
匹配所有input标签
最后一个
匹配包含其他元素的元素(作为parent的元素)
翻译伪元素?
input为以上类型的
d(‘input:xxxx’)
apply func on each nodes
# 为所有a标签添加haha类
doc("a").each(lambda i,e:pq(e).add_class("haha"))
如果要选择虚线ID,则需要转义点:
d = pq('')
>>> d('#hello\.you')
将链接的相对地址转成绝对地址
html = '''
pyquery test
test
this is test page
'''
doc = pq(html,parser="html")
doc.make_links_absolute(base_url="https://www.baidu.com")