摘要:語法與幾乎完全相同,所以不用再去費心去記一些奇怪的方法了。目前版本官方文檔簡介可讓你用的語法來對進(jìn)行操作。如果利用,對和的處理將更快。因此執(zhí)行上述操作之后,本身也發(fā)生了變化。操作同樣的原汁原味的語法運行結(jié)果這不需要多解釋了吧。
前言
你是否覺得 XPath 的用法多少有點晦澀難記呢?
你是否覺得 BeautifulSoup 的語法多少有些慳吝難懂呢?
你是否甚至還在苦苦研究正則表達(dá)式卻因為少些了一個點而抓狂呢?
你是否已經(jīng)有了一些前端基礎(chǔ)了解選擇器卻與另外一些奇怪的選擇器語法混淆了呢?
嗯,那么,前端大大們的福音來了,PyQuery 來了,乍聽名字,你一定聯(lián)想到了 jQuery,如果你對 jQuery 熟悉,那么 PyQuery 來解析文檔就是不二之選!包括我在內(nèi)!
PyQuery 是 Python 仿照 jQuery 的嚴(yán)格實現(xiàn)。語法與 jQuery 幾乎完全相同,所以不用再去費心去記一些奇怪的方法了。
天下竟然有這等好事?我都等不及了!
安裝有這等神器還不趕緊安裝了!來!
pip install pyquery參考來源
本文內(nèi)容參考官方文檔,更多內(nèi)容,大家可以去官方文檔學(xué)習(xí),畢竟那里才是最原汁原味的。
目前版本 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 進(jìn)行操作。這I和 jQuery 十分類似。如果利用 lxml,pyquery 對 xml 和 html 的處理將更快。
這個庫不是(至少還不是)一個可以和 JavaScript交互的代碼庫,它只是非常像 jQuery API 而已。
初始化在這里介紹四種初始化方式。
(1)直接字符串from pyquery import PyQuery as pq doc = pq("")
pq 參數(shù)可以直接傳入 HTML 代碼,doc 現(xiàn)在就相當(dāng)于 jQuery 里面的 $ 符號了。
(2)lxml.etreefrom lxml import etree doc = pq(etree.fromstring(""))
可以首先用 lxml 的 etree 處理一下代碼,這樣如果你的 HTML 代碼出現(xiàn)一些不完整或者疏漏,都會自動轉(zhuǎn)化為完整清晰結(jié)構(gòu)的 HTML代碼。
(3)直接傳URLfrom pyquery import PyQuery as pq doc = pq("http://www.baidu.com")
這里就像直接請求了一個網(wǎng)頁一樣,類似用 urllib2 來直接請求這個鏈接,得到 HTML 代碼。
(4)傳文件from pyquery import PyQuery as pq doc = pq(filename="hello.html")
可以直接傳某個路徑的文件名。
快速體驗現(xiàn)在我們以本地文件為例,傳入一個名字為 hello.html 的文件,文件內(nèi)容為
- first item
- second item
- third item
- fourth item
- fifth item
編寫如下程序
from pyquery import PyQuery as pq doc = pq(filename="hello.html") print doc.html() print type(doc) li = doc("li") print type(li) print li.text()
運行結(jié)果
看,回憶一下 jQuery 的語法,是不是運行結(jié)果都是一樣的呢?
在這里我們注意到了一點,PyQuery 初始化之后,返回類型是 PyQuery,利用了選擇器篩選一次之后,返回結(jié)果的類型依然還是 PyQuery,這簡直和 jQuery 如出一轍,不能更贊!然而想一下 BeautifulSoup 和 XPath 返回的是什么?列表!一種不能再進(jìn)行二次篩選(在這里指依然利用 BeautifulSoup 或者 XPath 語法)的對象!
然而比比 PyQuery,哦我簡直太愛它了!
屬性操作你可以完全按照 jQuery 的語法來進(jìn)行 PyQuery 的操作。
from pyquery import PyQuery as pq p = pq("")("p") print p.attr("id") print p.attr("id", "plop") print p.attr("id", "hello")
運行結(jié)果
hello
再來一發(fā)
from pyquery import PyQuery as pq p = pq("")("p") print p.addClass("beauty") print p.removeClass("hello") print p.css("font-size", "16px") print p.css({"background-color": "yellow"})
運行結(jié)果
依舊是那么優(yōu)雅與自信!
在這里我們發(fā)現(xiàn)了,這是一連串的操作,而 p 是一直在原來的結(jié)果上變化的。
因此執(zhí)行上述操作之后,p 本身也發(fā)生了變化。
DOM操作同樣的原汁原味的 jQuery 語法
from pyquery import PyQuery as pq p = pq("")("p") print p.append(" check out運行結(jié)果
check out reddit
Oh yes! check out reddit
Oh yes! check out reddit
這不需要多解釋了吧。
DOM 操作也是與 jQuery 如出一轍。
遍歷遍歷用到 items 方法返回對象列表,或者用 lambda
from pyquery import PyQuery as pq doc = pq(filename="hello.html") lis = doc("li") for li in lis.items(): print li.html() print lis.each(lambda e: e)運行結(jié)果
first item second item third item fourth item fifth itemfirst item second item third item fourth item fifth item 不過最常用的還是 items 方法
網(wǎng)頁請求PyQuery 本身還有網(wǎng)頁請求功能,而且會把請求下來的網(wǎng)頁代碼轉(zhuǎn)為 PyQuery 對象。
from pyquery import PyQuery as pq print pq("http://cuiqingcai.com/", headers={"user-agent": "pyquery"}) print pq("http://httpbin.org/post", {"foo": "bar"}, method="post", verify=True)感受一下,GET,POST,樣樣通。
AjaxPyQuery 同樣支持 Ajax 操作,帶有 get 和 post 方法,不過不常用,一般我們不會用 PyQuery 來做網(wǎng)絡(luò)請求,僅僅是用來解析。
PyQueryAjax
API最后少不了的,API大放送。
API
原汁原味最全的API,都在里面了!如果你對 jQuery 語法不熟,強烈建議先學(xué)習(xí)下 jQuery,再回來看 PyQuery,你會感到異常親切!
結(jié)語用完了 PyQuery,我已經(jīng)深深愛上了他!
你呢?
轉(zhuǎn)自:http://cuiqingcai.com/2636.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37972.html
摘要:注意,是叫做,不是。兩款瀏覽器同根同源,它們有著同樣的,但配色不同,由藍(lán)紅綠黃四種顏色組成,而由不同深度的藍(lán)色構(gòu)成。另外是基于的新特性實現(xiàn)的,所以它的一些執(zhí)行也支持異步操作,效率相對于來說也提高了。是否響應(yīng)信號,一般是命令,默認(rèn)是。 如果大家對 Python 爬蟲有所了解的話,想必你應(yīng)該聽說過 Selenium 這個庫,這實際上是一個自動化測試工具,現(xiàn)在已經(jīng)被廣泛用于網(wǎng)絡(luò)爬蟲中來應(yīng)對 ...
摘要:經(jīng)常用的包有如下解析的利器誠如所言進(jìn)行請求那是相當(dāng)?shù)姆奖?,雖然也可以用打包利器,曾經(jīng)也用過,不過相比較而已,現(xiàn)在更好用了操作的庫,性能卓越軟件測試的利器,配合已有類庫或者自己寫的類庫,做測試杠杠的。 經(jīng)常用的python包有如下 lxml 解析xml的利器 requests 誠如所言HTTP for human. 進(jìn)行http請求那是相當(dāng)?shù)姆奖悖m然也可以用urllib/url...
摘要:父節(jié)點我們可以用方法來獲取某個節(jié)點的父節(jié)點,我們用一個實例來感受一下運行結(jié)果在這里我們首先用選取了為的節(jié)點,然后調(diào)用了方法,得到其父節(jié)點,類型依然是類型。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---29、解析庫的使用:BeautifulSoup下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---31、數(shù)據(jù)存儲:文件存儲 在上一節(jié)我們介紹了 BeautifulSoup 的使用,它是一個非常強...
摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:運行結(jié)果如果運行結(jié)果一致則證明安裝成功。上一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)數(shù)據(jù)庫的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---2、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---數(shù)據(jù)庫的安裝:MySQL、MongoDB、Redis 抓取下網(wǎng)頁代碼之后,下一步就是從網(wǎng)頁中提取信息,提取信息的方式有...
閱讀 1130·2021-11-16 11:42
閱讀 2910·2021-10-12 10:18
閱讀 2868·2021-09-24 09:48
閱讀 3471·2019-08-30 15:56
閱讀 1535·2019-08-30 14:17
閱讀 3052·2019-08-29 12:14
閱讀 914·2019-08-27 10:51
閱讀 2032·2019-08-26 13:28