爬虫笔记pyquery

pyquery

        • 构建doc
        • 属性选择器
        • 样式选择器
        • 链式调用
        • 多属性定位
        • 伪类选择器
          • contains
          • disable
          • empty
          • eq
          • even
          • odd
          • first
          • gt
          • lt
          • has()
          • header
          • hidden
          • image
          • input
          • last
          • parent
          • pseudo
          • password radio reset submit select text
        • 操纵
          • each
        • 遍历
          • make_links_absolute

构建doc

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') #
contains

匹配包含指定文本的标签,即使只有一个,可能会返回多个元素,因为会把父标签算进去

doc(":contains(‘bbb’)")

disable

匹配所有禁用标签

d = PyQuery('
') d('input:disabled') []
empty

匹配所有不包含其他元素的标签

d = PyQuery('

title

') d(':empty') [

]

eq

按索引匹配

d = PyQuery('

') >>> d('h1:eq(0)') [] >>> d('h1:eq(1)') []
even

匹配偶数索引元素

d = PyQuery('

') >>> d('p:even') [

]

odd

匹配奇数索引以及0索引

first

匹配第一个

d = PyQuery('

') >>> d('p:first') []
gt

匹配索引大于指定值的

d = PyQuery('

') >>> d('p:first') []
lt

匹配索引小于指定值的

d = PyQuery('

') >>> d('p:first') []
has()

参数可以是属性,也可以是元素

>>> from pyquery import PyQuery
>>> d = PyQuery('
') >>> d('.foo:has(".baz")') [] >>> d('.foo:has(".foo")') [] >>> d('.foo:has(".bar")') [] >>> d('.foo:has(div)') []
header

匹配h1-h6标签

>>> from pyquery import PyQuery
>>> d = PyQuery('

title

') >>> d(':header') [

]

hidden

匹配所有隐藏input标签

>>> from pyquery import PyQuery
>>> d = PyQuery('
') >>> d('input:hidden') []
image

匹配所有type为image的Input标签

>>> from pyquery import PyQuery
>>> d = PyQuery('
') >>> d('input:image') []
input

匹配所有input标签

last

最后一个

parent

匹配包含其他元素的元素(作为parent的元素)

pseudo

翻译伪元素?

password radio reset submit select text

input为以上类型的
d(‘input:xxxx’)

操纵

each

apply func on each nodes

# 为所有a标签添加haha类
doc("a").each(lambda i,e:pq(e).add_class("haha"))

遍历

如果要选择虚线ID,则需要转义点:

d = pq('

') >>> d('#hello\.you')
make_links_absolute

将链接的相对地址转成绝对地址

html = '''



    
    pyquery test


    

test

this is test page

''' doc = pq(html,parser="html") doc.make_links_absolute(base_url="https://www.baidu.com")

你可能感兴趣的:(爬虫)