安装

pip install pyquery

官方文档:

https://pythonhosted.org/pyquery/

初始化方式(四种)

1. 直接字符串

from pyquery import PyQuery as pq
doc = pq("<html></html>")

pq 参数可以直接传入 HTML 代码,doc 现在就相当于 jQuery 里面的 $ 符号了。

2. lxml.etree

from lxml import etree
doc = pq(etree.fromstring("<html></html>"))

可以首先用 lxml 的 etree 处理一下代码,这样如果你的 HTML 代码出现一些不完整或者疏漏,都会自动转化为完整清晰结构的 HTML代码。

3. 直接传URL

from pyquery import PyQuery as pq
doc = pq('http://www.baidu.com')

这里就像直接请求了一个网页一样,类似用 requests.get(url) 来直接请求这个链接,得到 HTML 代码。

4. 传文件

from pyquery import PyQuery as pq
doc = pq(filename='hello.html')

可以直接传某个路径的文件名。

HTML标签操作

from pyquery import PyQuery as pq
doc = pq('http://so.fengniao.com/index.php?action=Image&keyword=%E7%BE%8E%E6%99%AF')
imgs = doc('img')#取到所有图片
li = doc('li')
print(li.text())
divs = doc('div')
p = doc('p')

属性操作

from pyquery import PyQuery as pq
doc = pq('http://so.fengniao.com/index.php?action=Image&keyword=%E7%BE%8E%E6%99%AF')
div = doc('div')
print(div.attr('id'))
print(div.attr('id','xiding'))
from pyquery import PyQuery as pq
p = pq('<p id="hello" class="hello"></p>')('p')
print p.addClass('beauty')
print p.removeClass('hello')
print p.css('font-size', '16px')
print p.css({'background-color': 'yellow'})

DOM操作

同样原汁原味的 jQuery 语法

from pyquery import PyQuery as pq
p = pq('<p id="hello" class="hello"></p>')('p')
print p.append(' check out <a href="https://pythonhosted.org/pyquery/api.html"><span>python</span></a>')
print p.prepend('Oh yes!')
d = pq('<div class="wrap"><div id="test"><a href="https://pythonhosted.org/pyquery/api.html">api</a></div></div>')
p.prependTo(d('#test'))
print p
print d
d.empty()
print d

运行结果

<p id="hello" class="hello"> check out <a href="https://www.python.org/"><span>python</span></a></p>
<p id="hello" class="hello">Oh yes! check out <a href="https://www.python.org/"><span>python</span></a></p>
<p id="hello" class="hello">Oh yes! check out <a href="https://www.python.org/"><span>python</span></a></p>
<div class="wrap"><div id="test"><p id="hello" class="hello">Oh yes! check out <a href="https://www.python.org/"><span>https://www.python.org/</span></a></p><a href="http://cuiqingcai.com">Germy</a></div></div>
<div class="wrap"/>

DOM 操作也是与 jQuery 如出一辙。

遍历

遍历用到 items 方法返回对象列表,或者用 lambda,不过常用的还是items()

imgs = doc('img')#取到所有图片
list_imgs = []
for img in imgs.items():
list_imgs.append(img.attr('src'))#将所有图片链接放到列表

网页请求

from pyquery import PyQuery as pq
print pq('http://www.baidu.com/', headers={'user-agent': 'pyquery'})
print pq('http://www.baidu.com/post', {'foo': 'bar'}, method='post', verify=True)

Ajax

PyQuery 同样支持 Ajax 操作,带有 get 和 post 方法,不过不常用,一般我们不会用 PyQuery 来做网络请求,仅仅是用来解析。

PyQuery AJAX

API

API

python3 爬虫之Pyquery的使用方法的更多相关文章

  1. Python网络爬虫神器PyQuery的使用方法

    #!/usr/bin/env python # -*- coding: utf-8 -*- import requests from pyquery import PyQuery as pq url ...

  2. python爬虫神器PyQuery的使用方法

    你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有了一些 ...

  3. python3 爬虫神器pyquery的使用实例之爬网站图片

    PyQuery 可让你用 jQuery 的语法来对 xml 进行操作,这和 jQuery 十分类似.如果利用 lxml,pyquery 对 xml 和 html 的处理将更快. 如果对 jQuery  ...

  4. # Python3微博爬虫[requests+pyquery+selenium+mongodb]

    目录 Python3微博爬虫[requests+pyquery+selenium+mongodb] 主要技术 站点分析 程序流程图 编程实现 数据库选择 代理IP测试 模拟登录 获取用户详细信息 获取 ...

  5. python3爬虫(4)各种网站视频下载方法

    python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...

  6. Python3爬虫:(一)爬取拉勾网公司列表

    人生苦短,我用Python 爬取原因:了解一下Python工程师在北上广等大中城市的薪资水平与入职前要求. Python3基础知识 requests,pyquery,openpyxl库的使用 爬取前的 ...

  7. Python爬虫之PyQuery使用(六)

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

  8. python3解析库pyquery

    pyquery是一个类似jquery的python库,它实现能够在xml文档中进行jQuery查询,pyquery使用lxml解析器进行快速在xml和html文档上操作,它提供了和jQuery类似的语 ...

  9. Python 爬虫的代理 IP 设置方法汇总

    本文转载自:Python 爬虫的代理 IP 设置方法汇总 https://www.makcyun.top/web_scraping_withpython15.html 需要学习的地方:如何在爬虫中使用 ...

随机推荐

  1. Web设计的速查卡(转)

    一.排版 1.VisiBone Font Card Download: GIF 2.常用字体表 (HTML) 3.混合字体 (PDF) 二.单元/尺寸 1.Points 和Pixels近似转换表 (H ...

  2. Cg入门14:Vertex Shader - 几何变换 —顶点扭曲

    mul (UNITY_MATRIX_MVP,upPos): 參数说明 由第一个參数UNITY_MATRIX_MVP 矩阵去影响第二个參数upPos向量(或者矩阵) Shader "Sbin/ ...

  3. sdut 2159:Ivan comes again!(第一届山东省省赛原题,STL之set使用)

    Ivan comes again! Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 The Fairy Ivan gave Say ...

  4. 网易AI工程师面试常见知识

  5. Spring_day03--Spring的事务管理

    Spring的事务管理 事务概念 1 什么事务 事务是操作中最基本的单元,表示一组操作要么都成功,有一个失败那么所有都失败. 2 事务特性 原子性 一致性 隔离性 持久性 3 不考虑隔离性产生读问题 ...

  6. 获取jqGrid中选择的行的数据以及 jqGrid获得所有行数据的方法

    获取jqGrid中选择的行的数据: 获取选择一行的id,如果你选择多行,那下面的id是最后选择的行的id:   1 var id=$('#gridTable').jqGrid('getGridPara ...

  7. [NOI2008] 志愿者招募[流量平衡]

    288. [NOI2008] 志愿者招募 ★★★★   输入文件:employee.in   输出文件:employee.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] ...

  8. Django学习笔记第七篇--实战练习三--关于更有层级的url请求、404错误以及其他响应函数

    一.关于更有层级的URL: 可以实现每一个APP一个子URL目录,例如app1的所有操作都在http://www.localhost1.com:5443/app1/xxxx 在工程主文件夹下的工程同名 ...

  9. 此类目的是防治序列化Json字符串时的循环引用问题-------最好解决方案

    http://james.newtonking.com/json/help/index.html using Newtonsoft.Json;using System;using System.Col ...

  10. [Android Tips] 26. Multiple Maven repositories in Gradle

    来自 https://gradleproject.wordpress.com/2013/02/14/multiple-maven-repositories-in-gradle/ This DOESN' ...