python中spider的用法_Spider-PyQuery基本用法(示例代码)
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基本用法(示例代码)相关推荐
- python中rgb颜色_Python 转换RGB颜色值的示例代码
题目:转换RBG颜色值 我们知道在网页中的颜色值设置都是用16进制的RGB来表示的,比如#FFFFFF,表示R:255,G:255,B:255的白色. 现在请设计一个函数可以转换RGB的16进制至10 ...
- python中特殊变量-python list每三个分成一组python中星号变量的几种特殊用法
在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数" ...
- Python中第三方库Requests库的高级用法详解
Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...
- 【干货】Python中“\n”、“\t”、“end”的用法
[干货]Python中"\n"."\t"."end"的用法 一级目录 二级目录 三级目录 一级目录 二级目录 三级目录
- Python中len( )函数和range( )函数的用法
Python中len( )函数和range( )函数的用法 目录 Python中len( )函数和range( )函数的用法 一.len( )函数 二.range( )函数 总结 一.len( )函数 ...
- Python中集合set和字典dict的用法区别
Python中集合set和字典dict的用法区别 核心知识点 Python列表(list).元组(tuple).字典(dict)和集合(set)详解 Python set集合详解 1. Python创 ...
- python中uniform(a、b)_Python stats.uniform方法代码示例
本文整理汇总了Python中scipy.stats.uniform方法的典型用法代码示例.如果您正苦于以下问题:Python stats.uniform方法的具体用法?Python stats.uni ...
- python 更新数据库历史_python 实现数据库中数据添加、查询与更新的示例代码
一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...
- python查询数据库后更新_python 实现数据库中数据添加、查询与更新的示例代码...
一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...
- python代码中怎么增加数据_python 实现数据库中数据添加、查询与更新的示例代码...
一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...
最新文章
- 为什么集群要奇数_面试系列 redis数据删除amp;集群
- Python中单下划线开头的特性
- 09-CoreData iOS10.0变化
- Linux 设置时区
- 什么样的程序员会让人讨厌?大家注意,千万不要成为这种程序员!
- 编译安装时的--prefix参数的使用方法,很实用,mark一下
- LIRe 源代码分析 1:整体结构
- linux 五笔输入法下载软件,极点五笔Linux版|极点五笔输入法官方linux版_最火软件站...
- JavaFTP文件传输 简单实现
- midas显示代理服务器错误,midas运行后出错大神帮忙看看哪错了
- 只利用热点事件就能吸粉引流?白日做梦!
- python定位地理位置_python 实现ip定位地址
- mysql rrd_将RRD数据库中数据导入MYSQL中_MySQL
- 合约战事风云 |链捕手
- 月份对比_2020年5月份,四款主流游戏电脑配置横向对比,你会选择哪款呢?
- 项目一:家庭记账软件
- 验证银行卡卡号是否符合规则
- Activity详解2
- 医院需要遵守的3个BYOD实施策略
- Android学习记录(7)—Intent中显示意图和隐式意图的用法
热门文章
- ID3/C4.5/Gini Index
- 电子科大820历年真题_【真题实战】电子科技大学2016计算机专业基础820真题
- fastjson android 版本,fastjson 1.1.58.android 发布,Bug 修复版本
- 露出暴露自拍论坛_如何照出高质感的自拍?——18个技巧,值得收藏
- 测试软件是否丢失数据,11种方法检测软件的可靠性
- 中国大学MOOC“Python程序设计基础”第6次开课时间
- Python+pandas时间序列对象常用操作
- 详解Python的max、min和sum函数用法
- 详解Python GUI版24点游戏制作过程
- 设计模式 C++观察者模式