爬虫 pyquery goquery css匹配语法 智障使用模板

pyquery 用法模板

主要分为
1类匹配   写法 doc(.class),
2 id 匹配 写法doc(#id),
3标签匹配 A B="C"  写法doc(A[B="C"])
4值匹配 A="B"  写法 B = doc("xxx").attr("A")   或B = doc("xxx").attr.A
5遍历相同类型。 for x in doc("yyyy").items()

import requests
from pyquery import PyQuery as pq


r = requests.get("http://video.infolz.com/")
r.encoding="utf-8"
r1 = requests.get("http://www.infolz.com/2016/1213/303.shtml")


"""
<object class="cmstopVideo" width="650" height="519" data="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=v0354ryo54j&auto=0" type="application/x-shockwave-flash">
    <param name="src" value="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=v0354ryo54j&auto=0"/>
    <param name="allowfullscreen" value="true"/>
    <param name="allowscriptaccess" value="true"/>
    <param name="wmode" value="Transparent"/>
</object>
"""

1单层查找 a > b

横跨多层查找用空格  a b

2选择类 .class

doc(.class)

3选择 id #id
doc(#id)

4标签匹配  A空格B="C"
用于匹配所有的 A B="C" 型   a href="http://..."  img src="http://"   object class="cmstopVideo"  param name="allowfullscreen"

匹配写法
doc.find("A[B]") 
doc.find("A[B='C']")
doc.find("object[class='cmstopVideo']")

3pyspider 写法
response.doc("object[class='cmstopVideo']")


Find("div[lang]")
筛选含有lang属性的div元素


Find("div[lang=zh]")
筛选lang属性为zh的div元素


Find("div[lang!=zh]")
筛选lang属性不等于zh的div元素


Find("div[lang¦=zh]")
筛选lang属性为zh或者zh-开头的div元素


Find("div[lang*=zh]")
筛选lang属性包含zh这个字符串的div元素


Find("div[lang~=zh]")
筛选lang属性包含zh这个单词的div元素,单词以空格分开的


Find("div[lang$=zh]")
筛选lang属性以zh结尾的div元素,区分大小写


Find("div[lang^=zh]")
筛选lang属性以zh开头的div元素,区分大小写


##find用法

doc.find("xxx")  可简写为 doc("xxx")

查找视频
doc = pq(r.text).find(".cmstopVideo").find("param[name='allowfullscreen']")

值匹配
用于匹配所有 A="B" 形, 配置B的值
attr原理  map映射匹配
attr("xxx") 可简写为 attr.xxx

例1     width="650"
例子2  value="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=v0354ryo54j&

url = 'http://www.cxz.gov.cn/info/1030/11967.htm'
doc = pq(r.text)
r = requests.get(url)
doc("#vsb_content script").attr('vurl')
pyspider 写法
response.doc("#vsb_content script").attr.vurl

遍历
r = requests.get("http://video.infolz.com/")
doc = pq(r.text)
for x in doc('.title > a').items():
    print(x)