pip install pyquery

2.引用方法

from pyquery import PyQuery as pq

3.简介

pyquery 是类型jquery 的一个专供python使用的html解析的库,使用方法类似bs4。

4.使用方法

4.1 初始化方法:

from pyquery import PyQuery as pq

doc =pq(html) #解析html字符串

doc =pq("http://news.baidu.com/") #解析网页

doc =pq("./a.html") #解析html 文本

4.2 基本CSS选择器

from pyquery import PyQuery as pq

html = ‘‘‘

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

print doc("#wrap .s_from link")

运行结果:

asdadasdad12312

asdadasdad12312

asdadasdad12312

#是查找id的标签  .是查找class 的标签  link 是查找link 标签 中间的空格表示里层

4.3 查找子元素

from pyquery import PyQuery as pq

html = ‘‘‘

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

#查找子元素

doc = pq(html)

items=doc("#wrap")

print(items)

print("类型为:%s"%type(items))

link = items.find(‘.s_from‘)

print(link)

link = items.children()

print(link)

运行结果:

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

类型为:

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

根据运行结果可以发现返回结果类型为pyquery,并且find方法和children 方法都可以获取里层标签

4.4查找父元素

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

items=doc(".s_from")

print(items)

#查找父元素

parent_href=items.parent()

print(parent_href)

运行结果:

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

parent可以查找出外层标签包括的内容,与之类似的还有parents,可以获取所有外层节点

4.5 查找兄弟元素

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

items=doc("link.active1.a123")

print(items)

#查找兄弟元素

siblings_href=items.siblings()

print(siblings_href)

运行结果:

asdadasdad12312

asdadasdad12312

asdadasdad12312

根据运行结果可以看出,siblings 返回了同级的其他标签

结论:子元素查找,父元素查找,兄弟元素查找,这些方法返回的结果类型都是pyquery类型,可以针对结果再次进行选择

4.6 遍历查找结果

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("link").items()

for it in its:

print(it)

运行结果:

asdadasdad12312

asdadasdad12312

asdadasdad12312

4.7获取属性信息

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("link").items()

for it in its:

print(it.attr(‘href‘))

print(it.attr.href)

运行结果:

http://asda.com

http://asda.com

http://asda1.com

http://asda1.com

http://asda2.com

http://asda2.com

4.8 获取文本

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("link").items()

for it in its:

print(it.text())

运行结果

asdadasdad12312

asdadasdad12312

asdadasdad12312

4.9 获取 HTML信息

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("link").items()

for it in its:

print(it.html())

运行结果:

asdadasdad12312

asdadasdad12312

asdadasdad12312

5.常用DOM操作

5.1 addClass removeClass

添加,移除class标签

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("link").items()

for it in its:

print("添加:%s"%it.addClass(‘active1‘))

print("移除:%s"%it.removeClass(‘active1‘))

运行结果

添加:asdadasdad12312

移除:asdadasdad12312

添加:asdadasdad12312

移除:asdadasdad12312

添加:asdadasdad12312

移除:asdadasdad12312

需要注意的是已经存在的class标签不会继续添加

5.2 attr css

attr 为获取/修改属性 css 添加style属性

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("link").items()

for it in its:

print("修改:%s"%it.attr(‘class‘,‘active‘))

print("添加:%s"%it.css(‘font-size‘,‘14px‘))

运行结果

C:Python27python.exe D:/test_his/test_re_1.py

修改:asdadasdad12312

添加:asdadasdad12312

修改:asdadasdad12312

添加:asdadasdad12312

修改:asdadasdad12312

添加:asdadasdad12312

attr css操作直接修改对象的

5.3 remove

remove 移除标签

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("div")

print(‘移除前获取文本结果:

%s‘%its.text())

it=its.remove(‘ul‘)

print(‘移除后获取文本结果:

%s‘%it.text())

运行结果

移除前获取文本结果:

hello nihao

asdasd

asdadasdad12312

asdadasdad12312

asdadasdad12312

移除后获取文本结果:

hello nihao

其他DOM方法参考: 请点击

6.伪类选择器

from pyquery import PyQuery as pq

html = ‘‘‘

hello nihao

asdasd

helloasdadasdad12312

asdadasdad12312

asdadasdad12312

‘‘‘

doc = pq(html)

its=doc("link:first-child")

print(‘第一个标签:%s‘%its)

its=doc("link:last-child")

print(‘最后一个标签:%s‘%its)

its=doc("link:nth-child(2)")

print(‘第二个标签:%s‘%its)

its=doc("link:gt(0)") #从零开始

print("获取0以后的标签:%s"%its)

its=doc("link:nth-child(2n-1)")

print("获取奇数标签:%s"%its)

its=doc("link:contains(‘hello‘)")

print("获取文本包含hello的标签:%s"%its)

运行结果

第一个标签:helloasdadasdad12312

最后一个标签:asdadasdad12312

第二个标签:asdadasdad12312

获取0以后的标签:asdadasdad12312

asdadasdad12312

获取奇数标签:helloasdadasdad12312

asdadasdad12312

获取文本包含hello的标签:helloasdadasdad12312

python中spider的用法_Spider-PyQuery基本用法(示例代码)相关推荐

  1. python中rgb颜色_Python 转换RGB颜色值的示例代码

    题目:转换RBG颜色值 我们知道在网页中的颜色值设置都是用16进制的RGB来表示的,比如#FFFFFF,表示R:255,G:255,B:255的白色. 现在请设计一个函数可以转换RGB的16进制至10 ...

  2. python中特殊变量-python list每三个分成一组python中星号变量的几种特殊用法

    在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数" ...

  3. Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...

  4. 【干货】Python中“\n”、“\t”、“end”的用法

    [干货]Python中"\n"."\t"."end"的用法 一级目录 二级目录 三级目录 一级目录 二级目录 三级目录

  5. Python中len( )函数和range( )函数的用法

    Python中len( )函数和range( )函数的用法 目录 Python中len( )函数和range( )函数的用法 一.len( )函数 二.range( )函数 总结 一.len( )函数 ...

  6. Python中集合set和字典dict的用法区别

    Python中集合set和字典dict的用法区别 核心知识点 Python列表(list).元组(tuple).字典(dict)和集合(set)详解 Python set集合详解 1. Python创 ...

  7. python中uniform(a、b)_Python stats.uniform方法代码示例

    本文整理汇总了Python中scipy.stats.uniform方法的典型用法代码示例.如果您正苦于以下问题:Python stats.uniform方法的具体用法?Python stats.uni ...

  8. python 更新数据库历史_python 实现数据库中数据添加、查询与更新的示例代码

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  9. python查询数据库后更新_python 实现数据库中数据添加、查询与更新的示例代码...

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  10. python代码中怎么增加数据_python 实现数据库中数据添加、查询与更新的示例代码...

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

最新文章

  1. 为什么集群要奇数_面试系列 redis数据删除amp;集群
  2. Python中单下划线开头的特性
  3. 09-CoreData iOS10.0变化
  4. Linux 设置时区
  5. 什么样的程序员会让人讨厌?大家注意,千万不要成为这种程序员!
  6. 编译安装时的--prefix参数的使用方法,很实用,mark一下
  7. LIRe 源代码分析 1:整体结构
  8. linux 五笔输入法下载软件,极点五笔Linux版|极点五笔输入法官方linux版_最火软件站...
  9. JavaFTP文件传输 简单实现
  10. midas显示代理服务器错误,midas运行后出错大神帮忙看看哪错了
  11. 只利用热点事件就能吸粉引流?白日做梦!
  12. python定位地理位置_python 实现ip定位地址
  13. mysql rrd_将RRD数据库中数据导入MYSQL中_MySQL
  14. 合约战事风云 |链捕手
  15. 月份对比_2020年5月份,四款主流游戏电脑配置横向对比,你会选择哪款呢?
  16. 项目一:家庭记账软件
  17. 验证银行卡卡号是否符合规则
  18. Activity详解2
  19. 医院需要遵守的3个BYOD实施策略
  20. Android学习记录(7)—Intent中显示意图和隐式意图的用法

热门文章

  1. ID3/C4.5/Gini Index
  2. 电子科大820历年真题_【真题实战】电子科技大学2016计算机专业基础820真题
  3. fastjson android 版本,fastjson 1.1.58.android 发布,Bug 修复版本
  4. 露出暴露自拍论坛_如何照出高质感的自拍?——18个技巧,值得收藏
  5. 测试软件是否丢失数据,11种方法检测软件的可靠性
  6. 中国大学MOOC“Python程序设计基础”第6次开课时间
  7. Python+pandas时间序列对象常用操作
  8. 详解Python的max、min和sum函数用法
  9. 详解Python GUI版24点游戏制作过程
  10. 设计模式 C++观察者模式