Python爬蟲利器六之PyQuery的用法

前言

你是否以爲 XPath 的用法多少有點晦澀難記呢?javascript

你是否以爲 BeautifulSoup 的語法多少有些慳吝難懂呢?css

你是否甚至還在苦苦研究正則表達式卻由於少些了一個點而抓狂呢?html

你是否已經有了一些前端基礎瞭解選擇器卻與另一些奇怪的選擇器語法混淆了呢?前端

嗯,那麼,前端大大們的福音來了,PyQuery 來了,乍聽名字,你必定聯想到了 jQuery,若是你對 jQuery 熟悉,那麼 PyQuery 來解析文檔就是不二之選!包括我在內!java

PyQuery 是 Python 仿照 jQuery 的嚴格實現。語法與 jQuery 幾乎徹底相同,因此不用再去費心去記一些奇怪的方法了。python

天下居然有這等好事?我都等不及了!jquery

安裝

有這等神器還不趕忙安裝了!來!git

仍是原來的配方,仍是熟悉的味道。github

參考來源

本文內容參考官方文檔,更多內容,你們能夠去官方文檔學習,畢竟那裏纔是最原汁原味的。web

目前版本 1.2.4 (2016/3/24)

官方文檔

簡介

pyquery allows you to make jquery queries on xml documents. The API is as much as possible the similar to jquery. pyquery uses lxml for fast xml and html manipulation.

This is not (or at least not yet) a library to produce or interact with javascript code. I just liked the jquery API and I missed it in python so I told myself 「Hey let’s make jquery in python」. This is the result.

It can be used for many purposes, one idea that I might try in the future is to use it for templating with pure http templates that you modify using pyquery. I can also be used for web scrapping or for theming applications with Deliverance.

pyquery 可以讓你用 jQuery 的語法來對 xml 進行操做。這I和 jQuery 十分相似。若是利用 lxml,pyquery 對 xml 和 html 的處理將更快。

這個庫不是(至少還不是)一個能夠和 JavaScript交互的代碼庫,它只是很是像 jQuery API 而已。

初始化

在這裏介紹四種初始化方式。

(1)直接字符串

pq 參數能夠直接傳入 HTML 代碼,doc 如今就至關於 jQuery 裏面的 $ 符號了。

(2)lxml.etree

能夠首先用 lxml 的 etree 處理一下代碼,這樣若是你的 HTML 代碼出現一些不完整或者疏漏,都會自動轉化爲完整清晰結構的 HTML代碼。

(3)直接傳URL

這裏就像直接請求了一個網頁同樣,相似用 urllib2 來直接請求這個連接,獲得 HTML 代碼。

(4)傳文件

能夠直接傳某個路徑的文件名。

快速體驗

如今咱們以本地文件爲例,傳入一個名字爲 hello.html 的文件,文件內容爲

編寫以下程序

運行結果

看,回憶一下 jQuery 的語法,是否是運行結果都是同樣的呢?

在這裏咱們注意到了一點,PyQuery 初始化以後,返回類型是 PyQuery,利用了選擇器篩選一次以後,返回結果的類型依然仍是 PyQuery,這簡直和 jQuery 一模一樣,不能更贊!然而想一下 BeautifulSoup 和 XPath 返回的是什麼?列表!一種不能再進行二次篩選(在這裏指依然利用 BeautifulSoup 或者 XPath 語法)的對象!

然而比比 PyQuery,哦我簡直太愛它了!

屬性操做

你能夠徹底按照 jQuery 的語法來進行 PyQuery 的操做。

運行結果

再來一發

運行結果

依舊是那麼優雅與自信!

在這裏咱們發現了,這是一連串的操做,而 p 是一直在原來的結果上變化的。

所以執行上述操做以後,p 自己也發生了變化。

DOM操做

一樣的原汁原味的 jQuery 語法

運行結果

這不須要多解釋了吧。

DOM 操做也是與 jQuery 一模一樣。

遍歷

遍歷用到 items 方法返回對象列表,或者用 lambda

運行結果

不過最經常使用的仍是 items 方法

網頁請求

PyQuery 自己還有網頁請求功能,並且會把請求下來的網頁代碼轉爲 PyQuery 對象。

感覺一下,GET,POST,樣樣通。

Ajax

PyQuery 一樣支持 Ajax 操做,帶有 get 和 post 方法,不過不經常使用,通常咱們不會用 PyQuery 來作網絡請求,僅僅是用來解析。

PyQueryAjax

API

最後少不了的,API大放送。

API

原汁原味最全的API,都在裏面了!若是你對 jQuery 語法不熟,強烈建議先學習下 jQuery,再回來看 PyQuery,你會感到異常親切!

結語

用完了 PyQuery,我已經深深愛上了他!

你呢?

轉載:靜覓 » Python爬蟲利器六之PyQuery的用法

相關文章
相關標籤/搜索