Python中类似于jquery的pyquery库用法分析_python

来源:脚本之家  责任编辑:小易  

Python是一种什么语言?Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Java语言等,Python是他们其中的一种。首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。所以Python是一种相当高级的语言。学习Python难吗?是不是越低级的程序越难学,越高级的程序越简单?表面上来说,是的。但是,在非常高的抽象计算中,高级的Python程序设计也是非常难学的,所以,高级程序语言不等于简单。但是,对于初学者和完成普通任务,Python语言是非常简单易用的。用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站像知乎、YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。总之就是能干很多很多事啦!Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。如果我是小白,我满足什么条件可以学Python呢?――会使用电脑,但从来没写过程序;――还记得初中数学学的方程式和一点点代数知识;――想从编程小白变成专业的软件架构师;怎样才能在python界占有一席之地呢?除了上述的三条,还要有:――4个月早上9:00到晚上10:30全力以赴不间断学习的毅力――不骄不躁不退缩不认输的决心如果我是小白,学Python要准备什么呢?学习Python必不可少的一部肯定是工具,一种是编码器,一种是解释器:编码器就是Python。目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的,因为现在Python正在朝着3.x版本进化,在进化过程中,大量的针对2.x版本的代码要修改后才能运行,所以,目前有许多第三方库还暂时无法在3.x上使用。IDE工具。IDE集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。常见使用的工具是:Pycharm:PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。IDLE:Idle 是一个纯Python 下使用 Tkinter 编写的相当基本的 IDE。Ipython:ipython 是一个python 的交互式 shell,比默认的pythonshell 好用得多。学Python后到底能干什么?运维、web开发、应用开发、大数据、数据挖掘、科学计算、机器学习、人工智能、自然语言处理…还可以写很长很长…智游Python,你值得拥有!www.zgxue.com防采集请勿采集本网。

本文实例讲述了Python中类似于jquery的pyquery库用法。分享给大家供大家参考,具体如下:

coding=utf-8 from selenium import webdriver import time driver=webdriver.Firefox() driver.get(\"\") 给搜索输入框标红javascript脚本 js=\"var q=document.getElementById(\\\"kw\\\");q.style.border=\\\"2

pyquery:一个类似于jquery的Python库

Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、Web开发、数据库接口、图形系统多个领域。第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序

pyquery可以使你在xml文档上做jquery查询,它的API尽可能地类似于jquery。pyquery使用lxml执行快速的xml和html操作。

Python全栈开发与人工智能之前端开发知识学习内容包括:Html、CSS、JavaScript开发、Jquery&bootstrap开发、前端框架VUE开发等。阶段四:WEB框架开发 Python全栈开发与人工智能之WEB框架开发学习内容包括

这并非(至少目前还不是)一个生成javascript代码或者与javascript代码做交互的库。pyquery的作者只是由于非常喜欢jquery的API因而将其用python实现。

它有着用于开发响应式网站的所有组件,如12列响应式网格、定制jQuery插件、bootstrap编辑器等等。2)HTML5 Boilerplate HTML5 Boilerplate能帮助我们构建快速、可适应的Web应用和网站。它提供了优秀的网站

该项目目前托管在Github仓库中并且处于活跃开发状态。作者可以为任何想要贡献源码的开发者赋予push权限,并且会对其做的变更做回顾。如果你想要贡献源码,可以发Email给项目作者。

html res/toastr/toastr.min.js\"> res/toastr/toastr.min.css\">

项目的Bug可以通过Github Issue Tracker进行提交。

快速入门

你可以使用PyQuery类从一个字符串,一个lxml文档,一个文件或者一个url钟载入一个xml文档:

>>> from pyquery import PyQuery as pq>>> from lxml import etree>>> import urllib>>> d = pq("<html></html>")>>> d = pq(etree.fromstring("<html></html>"))>>> d = pq(url=your_url)>>> d = pq(url=your_url,... opener=lambda url, **kw: urlopen(url).read())>>> d = pq(filename=path_to_html_file)

现在,d就相当于jquery里的$:

>>> d("#hello")[<p#hello.hello>]>>> p = d("#hello")>>> print(p.html())Hello world !>>> p.html("you know <a href='http://python.org/'>Python</a> rocks")[<p#hello.hello>]>>> print(p.html())you know <a href="http://python.org/" rel="external nofollow" >Python</a> rocks>>> print(p.text())you know Python rocks

你也可以使用某些jQuery中可用而并非css标准的伪类,诸如 :first :last :even :odd :eq :lt :gt :checked :selected :file:等

>>> d('p:first')[<p#hello.hello>]

参见http://pyquery.rtfd.org/查看全部文档

CSS

你可以像这样添加、切换、移除CSS:

>>> p.addClass("toto")[<p#hello.hello.toto>]>>> p.toggleClass("titi toto")[<p#hello.hello.titi>]>>> p.removeClass("titi")[<p#hello.hello>]

或者操作CSS样式:

>>> p.css("font-size", "15px")[<p#hello.hello>]>>> p.attr("style")'font-size: 15px'>>> p.css({"font-size": "17px"})[<p#hello.hello>]>>> p.attr("style")'font-size: 17px'

使用更加Pythonic的方式完成同样的功能 (‘_' 字符转换为 ‘-‘):

>>> p.css.font_size = "16px">>> p.attr.style'font-size: 16px'>>> p.css['font-size'] = "15px">>> p.attr.style'font-size: 15px'>>> p.css(font_size="16px")[<p#hello.hello>]>>> p.attr.style'font-size: 16px'>>> p.css = {"font-size": "17px"}>>> p.attr.style'font-size: 17px'

使用伪类: :button

匹配所有按钮输入元素和按钮元素 Matches all button input elements and the button element :checkbox

匹配所有复选框输入元素 Matches all checkbox input elements :checked

匹配选中的元素,下标从0开始 Matches odd elements, zero-indexed :child

右边是左边的直接子元素 right is an immediate child of left :contains()

包含元素 Matches all elements that contain the given text :descendant

右边是左边的子元素、孙元素或者更远的后继元素 right is a child, grand-child or further descendant of left :disabled

匹配所有被禁用的元素 Matches all elements that are disabled :empty

匹配所有不包括任何其他元素的元素 Match all elements that do not contain other elements :enabled

匹配所有启用的元素 Matches all elements that are enabled :eq()

使用下标匹配 Matches a single element by its index :even

从下标0开始,匹配所有偶数元素 Matches even elements, zero-indexed :file

匹配所有文件类型的输入元素 Matches all input elements of type file :first

匹配第一个被选择的元素 Matches the first selected element :gt()

匹配下标大于指定值的元素 Matches all elements with an index over the given one :header

匹配所有标题元素 Matches all header elelements (h1, ..., h6) :image

匹配所有图像输入元素 Matches all image input elements :input

匹配所有输入元素 Matches all input elements :last

匹配最后一个选择的元素 Matches the last selected element :lt()

匹配所有下标小于指定值的元素 Matches all elements with an index below the given one :odd

匹配奇元素,下标从0开始 Matches odd elements, zero-indexed :parent

匹配所有包含其他元素的元素 Match all elements that contain other elements :password

匹配所有密码输入元素 Matches all password input elements :radio

匹配单选按钮输入元素 Matches all radio input elements :reset

匹配所有重置输入元素 Matches all reset input elements :selected

匹配所有被选中的元素 Matches all elements that are selected :submit

匹配所有提交输入元素 Matches all submit input elements :text¶

匹配所有文本输入元素 Matches all text input elements

操作

你也可以向标签的尾部追加元素:

>>> d = pq('<p class="hello" id="hello">you know Python rocks</p>')>>> d('p').append(' check out <a href="http://reddit.com/r/python" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><span>reddit</span></a>')[<p#hello.hello>]>>> print(d)<p class="hello" id="hello">you know Python rocks check out <a href="http://reddit.com/r/python" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><span>reddit</span></a></p>

或者加至开头:

>>> p = d('p')>>> p.prepend('check out <a href="http://reddit.com/r/python" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >reddit</a>')[<p#hello.hello>]>>> print(p.html())check out <a href="http://reddit.com/r/python" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >reddit</a>you know ...

在其他元素之前或者之后追加元素:

>>> d = pq('<html><body><div id="test"><a href="http://python.org" rel="external nofollow" rel="external nofollow" >python</a> !</div></body></html>')>>> p.prependTo(d('#test'))[<p#hello.hello>]>>> print(d('#test').html())<p class="hello" ...

在其他元素之后插入元素:

>>> p.insertAfter(d('#test'))[<p#hello.hello>]>>> print(d('#test').html())<a href="http://python.org" rel="external nofollow" rel="external nofollow" >python</a> !

或者插入其他元素之前:

>>> p.insertBefore(d('#test'))[<p#hello.hello>]>>> print(d('body').html())<p class="hello" id="hello">...

对每个元素做一些事情:

>>> p.each(lambda i, e: pq(e).addClass('hello2'))[<p#hello.hello.hello2>]

移除一个元素:

>>> d = pq('<html><body><p id="id">Yeah!</p><p>python rocks !</p></div></html>')>>> d.remove('p#id')[<html>]>>> d('p#id')[]

移除选中元素的内容:

>>> d('p').empty()[<p>]

你可以获得修改后的html内容:

>>> print(d)<html><body><p/></body></html>

你可以生成html片段:

>>> from pyquery import PyQuery as pq>>> print(pq('<div>Yeah !</div>').addClass('myclass') + pq('<b>cool</b>'))<div class="myclass">Yeah !</div><b>cool</b>

移除所有命名空间:

>>> d = pq('<foo xmlns="http://example.com/foo"></foo>')>>> d[<{http://example.com/foo}foo>]>>> d.remove_namespaces()[<foo>]

遍历

一些jQuery遍历方法也可以支持。这里有几个例子。

你可以使用字符串选择器过滤选择列表:

>>> d = pq('<p id="hello" class="hello"><a/></p><p id="test"><a/></p>')>>> d('p').filter('.hello')[<p#hello.hello>]

可以使用eq选择器选中单个元素:

>>> d('p').eq(0)[<p#hello.hello>]

你可以找出嵌套元素:

>>> d('p').find('a')[<a>, <a>]>>> d('p').eq(1).find('a')[<a>]

也支持使用end从一级遍历中跳出:

>>> d('p').find('a').end()[<p#hello.hello>, <p#test>]>>> d('p').eq(0).end()[<p#hello.hello>, <p#test>]>>> d('p').filter(lambda i: i == 1).end()[<p#hello.hello>, <p#test>]

网络 Scraping

pyquery也可以从一个url载入html文档:

>>> pq(your_url)[<html>]

缺省使用的是python的urllib。

如果安装了requests就使用requests。你可以使用大部分requests的参数。

>>> pq(your_url, headers={'user-agent': 'pyquery'})[<html>]>>> pq(your_url, {'q': 'foo'}, method='post', verify=True)[<html>]

pyquery – PyQuery完整API参见:http://pyquery.readthedocs.org/en/latest/api.html

pyquery.ajax – PyQuery AJAX 扩展

如果安装了WebOb(它并不是pyquery的依赖项目),你可以查询一些wsgi app。在本例中,测试app在/处返回一个简单的输入,在/submit处返回一个提交按钮: IN this example the test app returns a simple input at / and a submit button at /submit:

>>> d = pq('<form></form>', app=input_app)>>> d.append(d.get('/'))[<form>]>>> print(d)<form><input name="youyou" type="text" value=""/></form>

app在新节点中也可用: The app is also available in new nodes:

>>> d.get('/').app is d.app is d('form').appTrue

你也可以请求另外一个路径:

>>> d.append(d.get('/submit'))[<form>]>>> print(d)<form><input name="youyou" type="text" value=""/><input type="submit" value="OK"/></form>

如果安装了restkit,你就可以直接从一个HostProxy app获取url:

>>> a = d.get(your_url)>>> a[<html>]

你可以获取到app的响应:

>>> print(a.response.status)200 OK

小贴士 Tips

你可以使链接转化为绝对链,在屏幕抓取时还会比较有用: You can make links absolute which can be usefull for screen scrapping:

>>> d = pq(url=your_url, parser='html')>>> d('form').attr('action')'/form-submit'>>> d.make_links_absolute()[<html>]

使用不同的解析器

缺省情况下,pyquery使用lxml xml解析器并且如果它不能工作的话,继续尝试lxml.html中的html解析器。xml解析器在解析xhtml页面时可能出现一些问题,因为解析器不会抛出一个错误,而是给出一个不能用的树。 The xml parser can sometimes be problematic when parsing xhtml pages because the parser will not raise an error but give an unusable tree (on w3c.org for example).

你也可以显式地声明使用哪一个解析器:

>>> pq('<html><body><p>toto</p></body></html>', parser='xml')[<html>]>>> pq('<html><body><p>toto</p></body></html>', parser='html')[<html>]>>> pq('<html><body><p>toto</p></body></html>', parser='html_fragments')[<p>]

html和html_fragments解析器都在lxml.html当中。

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

有个基于jquery的树,叫ztree,这个是有combobox tree的 query ztree插件不错,功能强大,用法也简单,api和demo都很完善内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python爬虫开发之pyquery模块详细使用方法与实例全解
  • python爬虫辅助利器pyquery模块的安装使用攻略
  • python爬虫pyquery库基本用法入门教程
  • python3解析库pyquery的深入讲解
  • python网络爬虫神器pyquery的基本使用教程
  • 在python中使用cookielib和urllib2配合pyquery抓取网页信息
  • python中的jquery pyquery库使用小结
  • python解析html开发库pyquery使用方法
  • python使用urllib模块和pyquery实现阿里巴巴排名查询
  • 零基础写python爬虫之爬虫编写全记录
  • python爬虫框架scrapy安装使用步骤
  • python爬虫学习笔记之pyquery模块基本用法详解
  • django2.1.3 中间件使用详解
  • python实现的多叉树寻找最短路径算法示例
  • python爬取网页转换为pdf文件
  • 浅谈django queryset对象(模型.objects)的常用方法
  • 利用python在excel中画图的实现方法
  • 在cmd命令行中运行python脚本的方法
  • python socket非阻塞模块应用示例
  • python模拟登录之滑块验证码的破解(实例代码)
  • python 随机数使用方法,推导以及字符串,双色球小程序实例
  • python中类和实例如何绑定属性与方法示例详解
  • jquery 有没有类似于select tree的插件
  • 学Python有前途么?
  • python 和 jquery 有什么区别
  • jquery 有没有类似于 switch方法?另外,就是公司让我把js脚本换成jquery脚本,我感觉好难呀,救救我吧。
  • 求助Python+webdriver向jquery中传入变量
  • Python 常用的标准库以及第三方库有哪些
  • 学python 最重要的是哪几个部分的内容?,如何进一步学习
  • 有哪些值得推荐的类似 jQuery UI 或者 Bootstrap 这样的 UI 框架
  • Python如何获取 Jquery消息提示插件toastr里面的值
  • js除了有JQuery框架以外,还有哪些强大点的框架,或者比较实用的也可以。。谁能给我介绍一下?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页pythonpython数据结构与算法教程python加密解密算法与技巧总结python编码操作技巧总结python函数使用技巧总结python字符串操作技巧汇总python入门与进阶经典教程python爬虫开发之pyquery模块详细使用方法与实例全解python爬虫辅助利器pyquery模块的安装使用攻略python爬虫pyquery库基本用法入门教程python3解析库pyquery的深入讲解python网络爬虫神器pyquery的基本使用教程在python中使用cookielib和urllib2配合pyquery抓取网页信息python中的jquery pyquery库使用小结python解析html开发库pyquery使用方法python使用urllib模块和pyquery实现阿里巴巴排名查询零基础写python爬虫之爬虫编写全记录python爬虫框架scrapy安装使用步骤python爬虫学习笔记之pyquery模块基本用法详解django2.1.3 中间件使用详解python实现的多叉树寻找最短路径算法示例python爬取网页转换为pdf文件浅谈django queryset对象(模型.objects)的常用方法利用python在excel中画图的实现方法在cmd命令行中运行python脚本的方法python socket非阻塞模块应用示例python模拟登录之滑块验证码的破解(实例代码)python 随机数使用方法,推导以及字符串,双色球小程序实例python中类和实例如何绑定属性与方法示例详解python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍python 中文乱码问题深入分析python科学计算环境推荐——anacpython逐行读取文件内容的三种方python中使用xlrd、xlwt操作excepython 动态变量名定义与调用方法在mac上搭建python数据分析开发环境使用python中的in ,not in来检查元素是不python urllib爬取百度云连接的实例代码一个基于flask的web应用诞生(1)详解django-auth-ldap 配置方法删除目录下相同文件的python代码(逐级优化python3利用axes3d库画3d模型图详细解读tornado协程(coroutine)原理python中关于使用模块的基础知识
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved