就像你当年光着脚连鞋都没得穿,在荒原上遇着骑马的姑娘,她对你说,要是勇敢我就带你上战场,你就真的跟着她的背影上了战场。很多年后你牛逼了,被各路过硬的妞儿包围着,其中有帝国公主有骑着魔龙的妖国女皇,一个个都比那个骑红马的女孩拉风。可在你心里最深处还是那片荒原那个骑红马的影子,你玩命地追,因为遇到她的时候你是个连鞋都没得穿的小屁孩,只有她对你伸出手来。

前言

    PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严格实现。语法与 jQuery 几乎完全相同,所以不用再去费心去记一些奇怪的方法了。

代码块和常用功能

import sys
from pyquery import PyQuery as pq
import requests
from lxml import etree
reload(sys)
sys.setdefaultencoding('utf-8')

传入网址

doc=pq(url='https://www.douban.com/photos/album/84559192/')//直接接上网址
doc=pq(requests.get(http://www.douban.com/photos/album/84559192/).content)//别的地方获取网址后传入

打印源代码

print doc

打印head标签

print doc('head')

常用css解析器

id的话就加上#号 class前面加上一个点 标签就直接写标签名

print doc('#id .list li')

查找元素

寻找子元素的办法,先找到父元素赋予一个变量,在这个变量寻找子元素。比如我要找所有li标签里a标签

items = doc('li')
lis = items.find('a')
print lis

元素的遍历,同bs4可以用.text(获取内容)

lii = doc('li').items()
for x in lii:print x.text()

提取标签里面的属性信息,同bs4

li = doc('.sharing-icon__wechat')
print li.attr('href')

提取标签里面的标签内容,比如li标签里面还有一个a标签,html()结果就是只是a标签和内容

li = doc('.li')
print li.html()

Dom操作 基于上面添加属性

li = doc('li')
print li.attr('name','link')
li.css('font-size','14px')

移除不要的属性

docc = pq(htmll)
warp = docc('.warp')
print warp.text()
warp.find('p').remove()
print warp.text()

自己选择第几个标签的用法

li = doc('li:first-child')
li = doc('li:last-child') //最后一个标签
print li
li = doc('li:nth-child(2)') //第二个标签
li = doc('li:gt(2)') //比2大的标签,第二个以后的标签

结语

    在爬虫体系里面匹配元素不可能只局限于某个模块,多个模块功能配合在一起才能达到最简便的目的。所以关于正则,bs4,pyquery,xpath这几个库的功能都要熟记于心,才能达到信手拈来的境界。