pyquery库的使用

摘要:
pyquery标签选择获取了所有的img标签(css选择器,你也可以换成不同的class和id)1importrequests2importre3frompyqueryimportPyQueryaspq4headers={5"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/

pyquery标签选择

获取了所有的img标签(css选择器,你也可以换成不同的class和id)

1 importrequests
2 importre
3 from pyquery importPyQuery as pq
4 headers={
5     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
6     "Accept-Encoding": "gzip, deflate",
7     "Accept-Language": "zh-CN,zh;q=0.9",
8     "Upgrade-Insecure-Requests": "1",
9     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
10 }
11 response=requests.get('https://www.zhihu.com/question/35239964/answer/66644148',headers=headers,timeout=9)
12 doc=pq(response.content)
13 #css选择器
14 a=doc('img')#<class 'pyquery.pyquery.PyQuery'>
15 print(a)
View Code

url初始化(通过访问url得到html代码)

有了pyquery,你甚至不需要再使用requests来get网页

from pyquery importPyQuery as pq
headers={
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"}
doc=pq(url='https://www.zhihu.com/question/35239964/answer/66644148',headers=headers)#直接初始化url得到源代码
print(doc('title').text())

文件初始化(通过文件得到html代码)

#文件初始化
from pyquery importPyQuery as pq
importrequests
#写文件#headers={#"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",#"Accept-Encoding": "gzip, deflate",#"Accept-Language": "zh-CN,zh;q=0.9",#"Upgrade-Insecure-Requests": "1",#"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"#}#result=requests.get('https://www.zhihu.com/question/35239964/answer/66644148',headers=headers)## result=pq(url='https://www.zhihu.com/question/35239964/answer/66644148',headers=headers)#print(type(result))#with open("zhihu.html",'wb')as f:#f.write(result.content)#读文件
doc=pq(filename='test.html')
print(doc('title'))

css选择器

doc('#content .list li')#得到的是所有的符合这种层级关系的li

查找元素

子元素

find(查内部的元素)

html=‘.....’
doc=py(html)
a=doc('.content')
b=a.find('img')查找.content内的img标签

children(和find一样)

html=‘.....’
doc=py(html)
a=doc('.content')
b=a.children('img')查找.content内的img标签

父元素

html=‘.....’
doc=py(html)
a=doc('.content')
b=a.parent()查找.content的父元素整体
html=‘.....’
doc=py(html)
a=doc('.content')
b=a.parents()遍历输出.content的所有祖先元素整体

当然也可以加上css选择器

html=‘.....’
doc=py(html)
a=doc('.content')
b=a.parents(‘.wrap’)查找.content的祖先节点中为.wrap的标签

兄弟元素

html=‘.....’
doc=py(html)
a=doc('.content')
b=a.siblings()#查找.content的同级标签,也可以加css选择器

遍历查找的元素

from pyquery importPyQuery as pq
headers={
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"}
doc=pq(url='https://www.zhihu.com/question/35239964/answer/66644148',headers=headers)
a=doc('img').items()#得到可迭代对象
for i ina:
    print(i)

<img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='503'%20height='410'&gt;&lt;/svg&gt;"data-rawwidth="503"data-rawheight="410"class="origin_image zh-lightbox-thumb lazy"width="503"data-original="https://pic4.zhimg.com/d8d9743a16e6db3f36b19a3397469b1d_r.jpg"data-actualsrc="https://pic4.zhimg.com/50/d8d9743a16e6db3f36b19a3397469b1d_hd.jpg"/>

加入i是得到的上述的html元素

获取属性:jpgurl=i.attr('data-original')

获取文本:text=i.text()

获取HTML:html=i.html()//获取i里面的html元素


DOM操作

addclass(添加class)、removeclass(移除class)

attr: .attr('name':'userid')//添加或替换name属性

css: .css('height':'500px')//添加或替换style

remove:

http='''
<div class='wrap'>helloworld
<p>this is p</p>
</div>'''
from pyquery import PyQuery as pq
doc=pq(http)
wrap=doc('.wrap')
print(wrap.text())#helloworld this is p
wrap.find('p').remove()
print(wrap.text())#helloworld

免责声明:文章转载自《pyquery库的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Delphi 设计模式:《HeadFirst设计模式》Delphi代码---工厂模式之抽象工厂[转]html中location的用法详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IE和Firefox的兼容问题

IE和Firefox的兼容问题 本文摘自:http://blog.csdn.net/powerglover/archive/2009/01/15/3789631.aspx 1、Event的问题 在ie中我们可以直接使用event变量,但是在firefox下由于event是局部变量,firefox下我们可以事件绑定到元素上 例如 <input type...

js小功能合集:计算指定时间距今多久、评论树核心代码、字符串替换和去除。

1.计算指定时间距今多久 var date1=new Date('2017/02/08 17:00'); //开始时间 var date2=new Date(); //当前时间 var date3=date2.getTime()-date1.getTime() //时间差的毫秒数 //计算出相差天数 var days=Math.floor(...

HttpServletrequest 注册和登录、request域对象、web动态shop

 summarize httpServletResponse跟 Request一个是响应一个是请求,获得客户端请求方式 用getMethod 得到的是String类型, response:属于重定向请求、地址栏URL会发生改变、想服务器发送两次请求 response解决中文乱码:response.setContentType("text/html;char...

JQuery中的DOM操作

内容摘录自锋利的JQuery一书 一. DOM操作的分类 一般来说,DOM操作分为3个方面,即DOM Core(核心)、HTML-DOM和CSS-DOM。 1. DOM Core DOM Core并不专属于javascript,任何一种支持DOM的程序设计语言都可以使用它。它的用途并非仅限于处理网页,也可以用来处理任何一种使用标记语言编写出来的文档,如XM...

ie6,ie7,ie8,FF 浏览器兼容问题

javascript部分1. document.form.item 问题问题:代码中存在 document.formName.item("itemName") 这样的语句,不能在FF下运行解决方法:改用 document.formName.elements["elementName"]2. 集合类对象问题问题:代码中许多集合类对象取用时使用(),IE能接受...

vue指令(3)v-html

理论知识 v-html可向元素中插入html片段,例如 '< h1>标题一< /h1>'等 该指令存在安全漏洞,因此在本地代码中可以使用,如果要调用第三方的代码中包含该指令,则存在安全隐患。 该指令的值可以同vue对象的data属性中变量绑定。 实践 <!DOCTYPE html> <html> <...