您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了python如何使用pyquery模塊,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來看看吧。
pyquery的介紹
pip3 install pyquery
from pyquery import PyQuery as pq
【使用PyQuery初始化解析對(duì)象,PyQuery是一個(gè)類,直接將要解析的對(duì)象作為參數(shù)傳入即可】
textParse = pq(html)
# urlParse = pq('http://www.baidu.com') #1 urlParse = pq(url='http://www.baidu.com') #2
fileParse = pq(filename="L:\demo.html")
result = textParse('h3').text()
result3=textParse(".p1").text()
result4=textParse("#user").attr("type")
result5=textParse("p,div").text()
result6=textParse("div a").attr.href
result7=textParse("[class='p1']").text()
result8=textParse("p:last").text()
(更多的,可以參考css)
from pyquery import PyQuery as pq html=""" <html> <head> </head> <body> <h3>This is a heading</h3> <p class="p1">This is a paragraph.</p> <p class="p2">This is another paragraph.</p> <div> 123 <a id="a1" href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" rel="external nofollow" >hello</a> </div> <input type="Button" > <input id="user" type="text" > </body> """ ###初始化 textParse = pq(html) # urlParse = pq('http://www.baidu.com') #1 # urlParse = pq(url='http://www.baidu.com') #2 # fileParse = pq(filename="L:\demo.html") ##獲取 result = textParse('h3').text() print(result) result2= textParse('div').html() print(result2) result3=textParse(".p1").text() print(result3) result4=textParse("#user").attr("type") print(result4) result5=textParse("p,div").text() print(result5) result6=textParse("div a").attr.href print(result6) result7=textParse("[class='p1']").text() print(result7) result8=textParse("p:last").text() print(result8) result9=textParse("div").find("a").text() print(result9) result12=textParse("p").filter(".p1").text() print(result12) result10=textParse("div").children() print(result10) result11=textParse("a").parent() print(result11)
attr(attribute):獲取屬性
result2=textParse("a").attr("href")
attr.xxxx:獲取屬性xxxx
result21=textParse("a").attr.href result22=textParse("a").attr.class_
text():獲取文本,子元素中也僅僅返回文本
result1=textParse("a").text()
html():獲取html,功能與text類似,但返回html標(biāo)簽
result3=textParse("div").html()
補(bǔ)充1:
元素的迭代:如果返回的結(jié)果是多個(gè)元素,如果想迭代出每個(gè)元素,可以使用items():
補(bǔ)充2:pyquery是jquery的python化,語法基本都是相通的,想了解更多,可以參考jquery。
add_class():增加class
remove_class():移除class
remove():刪除指定元素
from pyquery import PyQuery as pq html=""" <html> <head> </head> <body> <h3>This is a heading</h3> <p id="p1" class="p1">This is a paragraph.</p> <p class="p2">This is another paragraph.</p> <div > 123 <a class="ca" href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" rel="external nofollow" >hello</a> </div> <input type="Button" > <input id="user" type="text" > </body> """ textParse=pq(html) textParse('a').add_class("c1") print(textParse('a').attr("class")) textParse('a').remove_class("c1") print(textParse('a').attr("class")) print(textParse('div').html()) textParse('div').remove("a") print(textParse('div').html())
from pyquery import PyQuery as pq html=""" <html> <head> </head> <body> <h3>This is a heading</h3> <p id="p1" class="p1">This is a paragraph.</p> <p class="p2">This is another paragraph.</p> <div > 123 <a class="ca" href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" rel="external nofollow" >hello</a> </div> <input type="Button" > <input id="user" type="text" > </body> """ textParse=pq(html) textParse('a').attr("name","hehe") print(textParse('a').attr("name")) textParse('a').css("color","white") textParse('a').css({"background-color":"black","postion":"fixed"}) print(textParse('a').attr("style"))
這些操作什么時(shí)候會(huì)被用到:
【有時(shí)候可能會(huì)將數(shù)據(jù)樣式處理一下再存儲(chǔ)下來,就需要用到,比如我獲取下來的數(shù)據(jù)樣式我不滿意,可以自定義成我自己的格式】
【有時(shí)候需要逐層清理再篩選出指定結(jié)果,比如<div>123<a></a></div>中,如果僅僅想要獲取123就可以先刪除<a>再獲取】
先使用審查元素,定位目標(biāo)元素
確認(rèn)爬取信息
要注意的是,豆瓣新書是有一些分在后面頁的,實(shí)際上目標(biāo)應(yīng)該是li的上一級(jí)ul:
使用PyQuery篩選出結(jié)果:
from pyquery import PyQuery as pq urlParse=pq(url="https://book.douban.com/") info=urlParse("div.carousel ul li div.info") file=open("demo.txt","w",encoding="utf8") for i in info.items(): title=i.find("div.title") author=i.find("span.author") abstract=i.find(".abstract") file.write("標(biāo)題:"+title.text()+"\n") file.write("作者:"+author.text()+"\n") file.write("概要:"+abstract.text()+"\n") file.write("-----------------\n") print("\n") file.close()
以上就是關(guān)于python如何使用pyquery模塊的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。