PyQuery

"""
强大又灵活的网页解析库
pip install pyquery
官方文档
http://pyquery.readthedocs.io/API风格和前段jquery 相似
"""

初始化

字符串初始化

html = '''
<div><ul><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul></div>
'''
from pyquery import PyQuery as pq
doc = pq(html) # 创建一个对象
print(doc('li')) #传入css选择器,jQuery也是css选择器
# 选择id 就使用#
# 选择class 前面加.
# 标签名 什么也不加,直接传

URL初始化

# 自动请求url,把得到的html传递给函数
from pyquery import PyQuery as pq
doc = pq(url='http://www.baidu.com')
print(doc('head'))

文件初始化

from pyquery import PyQuery as pq
doc = pq(filename='demo.html')
print(doc('li'))

基本CSS选择器

"""
选择id 就使用#
选择class 前面加.
标签名 什么也不加,直接传"""
html = '''
<div id="container"><ul class="list"><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul></div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('#container .list li'))#这里我们需要注意的一个地方是doc('#container .list li'),这里的三者之间的并不是必须要挨着,只要是层级关系就可以,

常用CSS选择器方法

class .color 选择class='color’内的所有元素
#id #info 选择id='info’的所有元素
* * 选择所有元素
element p 选择所有的p元素
element,element div,p 选择所有div和p元素
element element div p 选择所有div内的p元素
[attribute] [target] 选择所有带target属性的元素
[attribute=value] [target=_blank] 选择target="_blank"的所有元素

查找元素

from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
print(type(items))
print(items)
lis = items.find('li') # 向里面查找li
print(type(lis))
print(lis)# 查找子元素
li = items.children()
print(type(li))
print(li)#父元素
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
container = items.parent()
print(type(container))
print(container)#祖先元素
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
parents = items.parents()
print(type(parents))
print(parents)# 兄弟元素
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings())

获取信息

# 获取属性
"""
pyquery对象.attr(属性名)
pyquery对象.attr.属性名"""
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.attr('href'))
print(a.attr.href)
"""
<a href="link3.html"><span class="bold">third item</span></a>
link3.html
link3.html
"""# 获取文本
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.text())
"""
<a href="link3.html"><span class="bold">third item</span></a>
third item
"""# 获取html
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
print(li.html())

DOM操作

# 添加和删除属性html = '''
<div class="wrap"><div id="container"><ul class="list"><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul></div></div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)
"""
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-0"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
"""# 同样的我们可以通过attr给标签添加和修改属性,
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.attr('name', 'link')
print(li)
li.css('font-size', '14px')
print(li)# remove
# 有时候我们获取文本信息的时候可能并列的会有一些其他标签干扰,这个时候通过remove就可以将无用的或者干扰的标签直接删除,从而方便操作
html = '''
<div class="wrap">Hello, World<p>This is a paragraph.</p></div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
wrap = doc('.wrap')
print(wrap.text())
wrap.find('p').remove()
print(wrap.text())
"""
Hello, World This is a paragraph.
Hello, World其他DOM方法
http://pyquery.readthedocs.io/en/latest/api.html
"""

伪类选择器

html = '''
<div class="wrap"><div id="container"><ul class="list"><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul></div></div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('li:first-child')
print(li)
li = doc('li:last-child')
print(li)
li = doc('li:nth-child(2)')
print(li)
li = doc('li:gt(2)')
print(li)
li = doc('li:nth-child(2n)')
print(li)
li = doc('li:contains(second)')
print(li)"""
<li class="item-0">first item</li><li class="item-0"><a href="link5.html">fifth item</a></li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-1"><a href="link2.html">second item</a></li>更多CSS选择器可以查看 http://www.w3school.com.cn/css/index.asp
"""

python—pyquery相关推荐

  1. python pyquery.get()_Python爬虫之PyQuery使用(六)

    Python爬虫之PyQuery使用 PyQuery简介 pyquery能够通过选择器精确定位 DOM 树中的目标并进行操作.pyquery相当于jQuery的python实现,可以用于解析HTML网 ...

  2. python pyquery库_python解析HTML之:PyQuery库的介绍与使用

    前言 Python关于爬虫的库挺多的,也各有所长.了解前端的也都知道, jQuery 能够通过选择器精确定位 DOM 树中的目标并进行操作,所以我想如果能用 jQuery 去爬网页那就 cool 了. ...

  3. python pyquery安装_win7下python安装pyquery

    安装pyquery之前首先要明确一点,easyinstall 是一款python包管理器,类似于node的npm,用于安装python的扩展包,它安装的包是以*.egg的方式. 要安装pq需要经历以下 ...

  4. python pyquery倒数第二个节点之前的节点_Python中PyQuery库的使用总结

    pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,我个人写过的一些抓取网页数据的脚本就是用它来解析html获取数据的.他的官方文档地址是:http://packages. ...

  5. python pyquery中如何解决nbsp_Python-PyQuery 详解

    PyQuery 库是一个非常强大又灵活的网页解析库,PyQuery 是 Python 仿照 jQuery 的严格实现,语法与 jQuery 几乎完全相同. 安装 跟安装其他库一样: >>& ...

  6. python pyquery安装_PyQuery的安装

    pyquery是一个类似jquery的工具,不过它是在服务端进行处理的,不像jquery是在浏览器中进行处理.如果我们要进行网络爬虫,爬取有用的信息,那么它是我至今见到的不二选择.我们当然可以自己爬取 ...

  7. python pyquery节点内所有文本_PyQuery详解

    在之前写的爬虫入门里,PyQuery一笔带过,这次详细地讲一下. 为什么选择PyQuery? Python爬虫解析库,主流的有 PyQuery Beautifulsoup Scrapy Selecto ...

  8. python pyquery不规则数据的抓取_11. 数据提取-PyQuery

    1. pyquery 1.1 介绍如果你对CSS选择器与Jquery有有所了解,那么还有个解析库可以适合你--Jquery官网https://pythonhosted.org/pyquery/ 1.2 ...

  9. python pyquery不规则数据的抓取_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

最新文章

  1. Android自定义View全解
  2. splunk 通过rest http导入数据
  3. 打破重重阻碍,Flutter 和 Web 生态如何对接?
  4. 怎么查这个文件在linux下的哪个目录
  5. tcp通讯一次最多能发送多少数据?_关于TCP/IP,必须知道的十个知识点
  6. zillow房价预测比赛_Zillow Prize: 百万美刀奖金的房价预测比赛
  7. 快!100小时免费GPU跑起来!低价又好用的深度学习宝藏平台!
  8. mysql拼接两字段查询
  9. Redis应用(四)——在Spring框架中的应用
  10. 【LeetCode】【字符串】题号:*657. 机器人能否返回原点
  11. CPU HQ 什么意思
  12. 玩转iOS开发:iOS 8新特性《Share Extension》
  13. 安卓手机屏幕在电脑上实时同步显示
  14. idea 设置eplice 前进后退快捷键
  15. Python数学建模 熵权法/熵值法
  16. selenium Gird
  17. 实用工具软件,精品软件推荐
  18. Kubectl(完整)基本操作命令
  19. 配置MSTP功能示例
  20. 你以为大厂的代码就不烂了?烂成一坨屎...

热门文章

  1. UNITY性能优化✨ProtoBuf 在 Unity 中的详细使用教程
  2. R调用BaiDu地图API
  3. Linux系统日检常见问题,linux系统维护常见错误记录
  4. 按位与、按位或、按位异或
  5. 淮安培训python
  6. Python logging 日志配置文件模板
  7. HTML基本标签(一)
  8. 夜神模拟器绕过手势密码登录
  9. 挂载Nginx配置文件
  10. 图神经网络+强化学习