欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬蟲學習筆記之pyquery模塊基本用法詳解

 更新時間:2020年04月09日 11:13:39   作者:隨風行云  
這篇文章主要介紹了python爬蟲學習筆記之pyquery模塊基本用法,結合實例形式詳細分析了python爬蟲pyquery模塊基本功能、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了python爬蟲學習筆記之pyquery模塊基本用法。分享給大家供大家參考,具體如下:

相關內容:

  • pyquery的介紹
  • pyquery的使用
    • 安裝模塊
    • 導入模塊
    • 解析對象初始化
    • css選擇器
    • 在選定元素之后的元素再選取
    • 元素的文本、屬性等內容的獲取
  • pyquery執(zhí)行DOM操作、css操作
    • Dom操作
    • CSS操作
  • 一個利用pyquery爬取豆瓣新書的例子

首發(fā)時間:2018-03-09 21:26


pyquery的介紹

  • pyquery允許對xml、html文檔進行jQuery查詢。
  • pyquery使用lxml進行快速xml和html操作。
  • pyquery是python中的jquery


PyQuery的使用:

1.安裝模塊:

pip3 install pyquery

2.導入模塊:

from pyquery import PyQuery as pq

3.解析對象初始化:

【使用PyQuery初始化解析對象,PyQuery是一個類,直接將要解析的對象作為參數傳入即可

  • 解析對象為字符串時字符串初始化 :默認情況下是字符串,如果字符串是一個帶http\https前綴的,將會認為是一個url
    textParse = pq(html)
  • 解析對象為網頁時url初始化: 建議使用關鍵字參數url=
    # urlParse = pq('http://www.baidu.com') #1
    urlParse = pq(url='http://www.baidu.com') #2
  • 解析對象為文件時文件初始化:建議使用關鍵字參數filename=
    fileParse = pq(filename="L:\demo.html")
  • 解析完畢后,就可以使用相關函數或變量來進行篩選,可以使用css等來篩選,

4.CSS選擇器:

  • 利用標簽獲?。?
    result = textParse('h2').text()
  • 利用類選擇器:
    result3=textParse(".p1").text()
  • 利用id選擇:
    result4=textParse("#user").attr("type")
  • 分組選擇:
    result5=textParse("p,div").text()
  • 后代選擇器:
    result6=textParse("div a").attr.href
  • 屬性選擇器:
    result7=textParse("[class='p1']").text()
  • CSS3偽類選擇器:
    result8=textParse("p:last").text()

(更多的,可以參考css)

5.在選定元素之后的元素再選取:

  • find():找出指定子元素 ,find可以有參數,該參數可以是任何 jQuery 選擇器的語法,
  • filter():對結果進行過濾,找出指定元素 ,filter可以有參數,該參數可以是任何 jQuery 選擇器的語法,
  • children():獲取所有子元素,可以有參數,該參數可以是任何 jQuery 選擇器的語法,
  • parent():獲取父元素,可以有參數,該參數可以是任何 jQuery 選擇器的語法,
  • parents():獲取祖先元素,可以有參數,該參數可以是任何 jQuery 選擇器的語法,
  • siblings():獲取兄弟元素,可以有參數,該參數可以是任何 jQuery 選擇器的語法,
from pyquery import PyQuery as pq

html="""
<html>
<head>
</head>
<body>
<h2>This is a heading</h2>
<p class="p1">This is a paragraph.</p>
<p class="p2">This is another paragraph.</p>
<div> 
123
<a id="a1"  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('h2').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)

6.元素的文本、屬性等內容的獲取:

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標簽image

result3=textParse("div").html()

補充1:

元素的迭代:如果返回的結果是多個元素,如果想迭代出每個元素,可以使用items():

image

補充2:pyquery是jquery的python化,語法基本都是相通的,想了解更多,可以參考jquery。


pyquery執(zhí)行DOM操作、css操作:

DOM操作:

add_class():增加class

remove_class():移除class

remove():刪除指定元素

from pyquery import PyQuery as pq

html="""
<html>
<head>
</head>
<body>
<h2>This is a heading</h2>
<p id="p1" class="p1">This is a paragraph.</p>
<p class="p2">This is another paragraph.</p>
<div style="color:blue"> 
123
<a class="ca"  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())

 

css操作:

  • attr():設置屬性
    • 設置格式:attr("屬性名","屬性值")
  • css():設置css
    • 設置格式1:css("css樣式","樣式值")
    • 格式2:css({"樣式1":"樣式值","樣式2":"樣式值"})
from pyquery import PyQuery as pq

html="""
<html>
<head>
</head>
<body>
<h2>This is a heading</h2>
<p id="p1" class="p1">This is a paragraph.</p>
<p class="p2">This is another paragraph.</p>
<div style="color:blue"> 
123
<a class="ca"  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"))

這些操作什么時候會被用到:

【有時候可能會將數據樣式處理一下再存儲下來,就需要用到,比如我獲取下來的數據樣式我不滿意,可以自定義成我自己的格式】

【有時候需要逐層清理再篩選出指定結果,比如<div>123<a></a></div>中,如果僅僅想要獲取123就可以先刪除<a>再獲取】


一個利用pyquery爬取豆瓣新書的例子:

先使用審查元素,定位目標元素image

確認爬取信息image

要注意的是,豆瓣新書是有一些分在后面頁的,實際上目標應該是li的上一級ul:image

使用PyQuery篩選出結果:

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("標題:"+title.text()+"\n")
  file.write("作者:"+author.text()+"\n")
  file.write("概要:"+abstract.text()+"\n")
  file.write("-----------------\n")
  print("\n")
file.close()

更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python正則表達式用法總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python 定義類時,實現內部方法的互相調用

    python 定義類時,實現內部方法的互相調用

    今天小編就為大家分享一篇python 定義類時,實現內部方法的互相調用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python+Pygame實現之見縫插針游戲的實現

    Python+Pygame實現之見縫插針游戲的實現

    這篇文章主要為大家介紹了如何利用Python中的Pygame模塊實現見縫插針游戲,文中的示例代碼講解詳細,對我們學習Python游戲開發(fā)有一定幫助,需要的可以參考一下
    2022-07-07
  • 使用Python pyglet庫編寫一個可播放音樂的揚聲器類流程詳解

    使用Python pyglet庫編寫一個可播放音樂的揚聲器類流程詳解

    這篇文章主要介紹了使用Python pyglet庫編寫一個可播放音樂的揚聲器類,Pyglet主要用于創(chuàng)建視頻游戲、獨立游戲和多媒體應用,它提供了一組用于制作游戲的常用功能,包括圖形渲染、聲音播放、事件處理等等,需要的朋友可以參考下
    2024-03-03
  • python判斷元素是否存在的實例方法

    python判斷元素是否存在的實例方法

    在本篇內容里小編給大家整理的是一篇關于python判斷元素是否存在的實例方法,有需要的朋友們可以學習參考下。
    2020-09-09
  • Python 多線程不加鎖分塊讀取文件的方法

    Python 多線程不加鎖分塊讀取文件的方法

    今天小編就為大家分享一篇Python 多線程不加鎖分塊讀取文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python?Celery動態(tài)添加定時任務生產實踐指南

    Python?Celery動態(tài)添加定時任務生產實踐指南

    elery是一種異步任務隊列,如果還不熟悉這個開源軟件的請先看看官方文檔,快速入門,下面這篇文章主要給大家介紹了關于Python?Celery動態(tài)添加定時任務生產實踐的相關資料,需要的朋友可以參考下
    2022-08-08
  • python之cv2與圖像的載入、顯示和保存實例

    python之cv2與圖像的載入、顯示和保存實例

    今天小編就為大家分享一篇python之cv2與圖像的載入、顯示和保存實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python encrypt 實現AES加密的實例詳解

    python encrypt 實現AES加密的實例詳解

    在本篇文章里小編給大家分享的是關于python encrypt 實現AES加密的實例內容,有興趣的朋友們可以參考下。
    2020-02-02
  • python如何提取xml指定內容

    python如何提取xml指定內容

    這篇文章主要介紹了python如何提取xml指定內容,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Matplotlib中文亂碼的3種解決方案

    Matplotlib中文亂碼的3種解決方案

    當我們用matplotlib作圖時,往往會發(fā)現中文的文字變成了小方塊,我在繪制決策樹的時候就碰到了這個問題。下面這篇文章主要給大家總結介紹了關于Matplotlib中文亂碼的3種解決方案,需要的朋友可以參考下
    2018-11-11

最新評論