爬虫入门【5】PyQuery简介
PyQuery
目前最新的版本是1.3,基于最新版本进行介绍。
主要根据PyQuery的官方文档进行了更新。
from pyquery import PyQuery as pq
from lxml import etree
import urllib
doc=pq('<p id="hello" class="hello"></p>')#解析文档的基本方法
p=doc('p')#获取p标签
print(p.attr('id'))#获取p标签的id属性的值
p.attr('id','plop')#改变p标签的id属性的值为plop
print(p.attr('id'))
p.attr.id='snow'#使用python的方式改变id属性
print(p.attr.id)
p.attr['id']='ola'
print(p.attr['id'])
p.attr(id='hello',class_='hello2')
print(p)
hello
plop
snow
ola
<p id="hello" class="hello2"/>
CSS内容
p.add_class('toto')#增加class内容
# print(p)
p.toggle_class('titi toto')#切换class内容
# print(p)
p.remove_class('titi')#移除class
# print(p)
#添加style,以font-size为例
p.css.font_size='16px'
p.css['font-size']='16px'
p.css={'font-size':'17px'}
Manipulating
#向标签内容的尾部添加一些string
p.append(' check out <a href="http://www.baidu.com">百度一下</a>')
#pp()
#也可以向标签的头部添加
p.prepend('hello again! ')
#pp()
#或者使用这两个命令添加到其他文档或者标签的内容中
d=pq('<html><body><div id="test"><a href="http://python.org">python</a> !</div></body></html>')
p.prepend_to(d('#test'))#将p的内容添加到d的id为test的标签里面,占据最开始的位置
#print(d('#test').html())#打印出id为test的标签的内容
p.insert_after(d('#test'))#把p标签放在id为test的标签后面
#print(d('body').html())
p.insert_before(d('#test'))#把p标签插入到id为test的标签前面
#print(d('body').html())#可以看出来,p插入到了id为test的标签的前面
#移除一个元素
d=pq('<html><body><p id="id">Yeah!</p><p>python rocks !</p></div></html>')
d.remove('p#id')#移除了p标签的id属性
#print(d('body').html())
#将标签的内容移除
d('p').empty()
#print(d('p'))
#可以将两个PyQuery对象连接起来:
print(pq('<div>Yeah !</div>').add_class('myclass') + pq('<b>cool</b>'))
Traversing
d = pq('<p id="hello1" class="test1"><a>1</a></p><p id="hello2" class="test2"><a>2</a></p>')
#print(d('p').filter('.test1'))#按类选择,class名为test1的p标签。
#print(d('p').filter('#hello2'))#按id选择,id名为hello2的p标签
#print(d('p').eq(0))#第一个p标签
#print(d('p').eq(1))#第二个p标签
"""Return PyQuery of only the element with the provided index:
>>> d = PyQuery('<p class="hello">Hi</p><p>Bye</p><div></div>')
>>> d('p').eq(0)
[<p.hello>]
>>> d('p').eq(1)
[<p>]
>>> d('p').eq(2)
[]
"""
#查询嵌套的元素
#print(d('p').find('a'))
#print(d('p').eq(1).find('a'))
API
http://pythonhosted.org/pyquery/api.html
请参考官方文档的介绍。
Scraping
#PyQuery可以使用url载入html文档,默认使用python的urllib库
print(pq('http://www.baidu.com'))
#如果安装了request库,也可以使用并且可以使用requests的大多参数
pq('http://duckduckgo.com/', headers={'user-agent': 'pyquery'})
pq('https://duckduckgo.com/', {'q': 'foo'}, method='post', verify=True)
如果您觉得感兴趣的话,可以添加我的微信公众号:一步一步学Python

爬虫入门【5】PyQuery简介的更多相关文章
- Python网络爬虫入门篇
1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用 ...
- Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分
1. Python爬虫入门教程 爬取背景 2019年1月10日深夜,打开了百思不得姐APP,想了一下是否可以爬呢?不自觉的安装到了夜神模拟器里面.这个APP还是比较有名和有意思的. 下面是百思不得姐的 ...
- Python 入门之Python简介
Python 入门之Python简介 1.Python简介: (1) Python的出生: python的创始人为吉多·范罗苏姆(Guido van Rossum)(中文名字:龟叔).1989年的 ...
- Python基础及爬虫入门
**写在前面**我们在学习任何一门技术的时候,往往都会看很多技术博客,很多程序员也会写自己的技术博客.但是我想写的这些不是纯技术博客,我暂时也没有这个能力写出 Python 或者爬虫相关的技术博客来. ...
- Python爬虫入门(二)之Requests库
Python爬虫入门(二)之Requests库 我是照着小白教程做的,所以该篇是更小白教程hhhhhhhh 一.Requests库的简介 Requests 唯一的一个非转基因的 Python HTTP ...
- 爬虫入门五 gooseeker
title: 爬虫入门五 gooseeker date: 2020-03-16 16:00:00 categories: python tags: crawler gooseeker是一个简单的爬虫软 ...
- 爬虫入门四 re
title: 爬虫入门四 re date: 2020-03-14 16:49:00 categories: python tags: crawler 正则表达式与re库 1 正则表达式简介 编译原理学 ...
- 爬虫入门三 scrapy
title: 爬虫入门三 scrapy date: 2020-03-14 14:49:00 categories: python tags: crawler scrapy框架入门 1 scrapy简介 ...
- 爬虫入门二 beautifulsoup
title: 爬虫入门二 beautifulsoup date: 2020-03-12 14:43:00 categories: python tags: crawler 使用beautifulsou ...
- Python简单爬虫入门三
我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...
随机推荐
- ES6中Set集合(与java里类似)
一.引入背景 Set集合是一种无重复元素的列表,开发者们一般不会逐一读取数组中的元素,也不太可能逐一访问Set集合中的每个元素,通常的做法是检测给定的值在某个集合中是否存在 Map集合内含多组键值对, ...
- spring-hadoop-samples
官方的spring-hadoop-samples的demo 写的还是挺好的,值得学习. 官网地址: http://projects.spring.io/spring-hadoop/#quick-sta ...
- 我的MAC可能在设置环境变量的时候设置错了,现在整个MAC的vi,ls等命令都执行不了了。
1,在命令行中输入export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端或者c ...
- java中map的应用
map是键值对的集合接口,需要存储两个字段有联系的字段时可以使用这个. 1.查找字符串数组重复次数最多的字符串的重复次数 思路:使用map键值对存储,key值存数字符串,value存储出现的次数 Ma ...
- 使用Spring开发和监控线程池服务
第1步:添加maven 项目 第2步:添加依赖库 将Spring的依赖添加到Maven的pom.xml文件中. 1 2 3 4 5 6 7 8 9 10 11 <!-- Spring 3 dep ...
- CHM乱码解决方案!
--希望对您有所帮助,闲暇之余请访问我的网店高清数据线 下载了一个日文的chm帮助文件,打开的时候,发现是乱码, CHM 文档不像IE浏览器一样,右键可以选择字符编码,非常不便. 原因可能是 CHM ...
- STL学习笔记(string)
动机 C++标准程序库中的string class使我们可以将string当做一个一般型别.我们可以像对待基本型别那样地复制.赋值和比较string, 再也不必但系内存是否足够.占用的内存实际长度等问 ...
- 基于Django进行简单的微信开发
代码地址如下:http://www.demodashi.com/demo/11756.html 一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提 ...
- apktool反编译时各种问题汇总
问题1:apktool d -d 时出现错误Error occured while disassembling class办法:这不是你的错误,这是apktool本身的错误,目前正式release的1 ...
- python 读写数据
开源标准数据集 —— mnist(手写字符识别) 下载地址:mnist.pkl.gz 1. 使用 python 读取和解析 mnist.pkl.gz import pickle import gzip ...