PyQuery

http://www.ruanyifeng.com/blog/2009/03/css_selectors.html

參考:https://zhuanlan.zhihu.com/p/35356276
用pyquery的使用來展示css選擇器的用法

from pyquery import PyQuery as pq

提取內(nèi)容

  • 提取標(biāo)簽內(nèi)容,用.text()
  • 提取標(biāo)簽屬性值,用.attr()
  • 提取子節(jié)點帶標(biāo)簽,用.html()
from pyquery import PyQuery as pq
a = '''
<body>
    <h><a href='www.biaoti.com'>head</a></h>
    <p>段落1</p>
    <p>段落2</p>
</body>
'''

doc = pq(a)
# 提取標(biāo)簽內(nèi)容
print(doc('h').text()) 
print(doc('h').html()) 
print(doc('body').html()) 
print(doc('p').text()) 
print(doc('p').text().split(' ')) 
print(doc('p:nth-of-type(1)').text()) 
print(doc('body').text()) 


# 提取標(biāo)簽屬性
print(doc('h a').attr('href'))
a = '''
<body>
    <h1>head</h1>
    <h2>標(biāo)題2</h2>
    <h2>標(biāo)題3</h2>
</body>
'''
doc = pq(a)

print(doc('h1').text()) 
print(doc('h1, h2').text()) # 表示“或”用逗號 'head 標(biāo)題2 標(biāo)題3'



a = '''
<body>
    <h>標(biāo)題</h>
    <p id='p1'>段落1</p>
    <p id='p2'>段落2</p>
    <p class='p3'>段落3</p>
    <p class='p3' id='pp'>段落4</p>
</body>
'''

doc = pq(a)
doc('p#p1').text() # '段落1'
doc('p.p3[id]').text() # 含有id屬性
doc('p.p3#pp').text() # 使用多個屬性篩選
doc('p[class=p3][id=pp]').text()
doc('p[class=p3], p[id=p1]').text() # 或的關(guān)系
doc('p[class=p3],[id=p1]').text() # 或者只用,隔開
doc('*#p1').text() # 不指定標(biāo)簽名

# 否定
doc('p:not([id])').text() # 不含有id屬性
doc('body :not(p)').text() # 選出不是p的子節(jié)點  '標(biāo)題'
doc('p:not(.p3)').text() # 選出class不是p3的
doc('p[id][id!=p2]').text() # 也可以用!=,這里選擇有id且id不是p2的

# 類似正則表達(dá)式
doc('p[id^=p]').text() # 首端匹配
doc('p[id$=p]').text() # 尾端匹配
doc('p[id*=p]').text() # 包含


a = '''
<p id='p1'>段落1</p>
<p class='p3'>段落2</p>
<p class='p3'>文章</p>
<p></p>
'''

doc = pq(a)
# :contains查找內(nèi)容中包含某字符串的標(biāo)簽
doc('p:contains(段落1)').text() # '段落1'
doc('p:contains(段落)').text() # '段落1 段落2'
doc('p:contains("1")').text()



a = '''<title>標(biāo)題</title>
<body>
    <ul class='list1'>
        <li>列表1第1項</li>
        <li>列表1第2項</li>
    </ul>
    <p class='first'>文字1</p>
    <p class='second'>文字2</p>
    <ul class='list2'>
        <li>列表2第1項</li>
        <li>列表2第2項</li>
    </ul>
</body>'''

doc = pq(a)
doc('ul:nth-of-type(2) li').text() # 選擇第二個ul下的所有l(wèi)i
doc('ul li:nth-of-type(2)').text() # 選擇每個ul中第二個li
doc('ul li:even').text() # :even取偶數(shù)  :odd取奇數(shù)(這里索引第一個是0)
doc('ul li:first').text() # :first取第一個 :last取最后一個
doc('ul li:eq(0)').text() # 還有 lt gt 索引從0開始
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 用到的組件 1、通過CocoaPods安裝 2、第三方類庫安裝 3、第三方服務(wù) 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 15,191評論 1 180
  • 學(xué)習(xí)筆記 原文地址:antDesignPro使用心得,快速開發(fā)必備。https://www.52pojie.cn/...
    kalshen閱讀 44,932評論 8 85
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,822評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    余生動聽閱讀 10,858評論 0 11
  • 可愛進(jìn)取,孤獨(dú)成精。努力飛翔,天堂翱翔。戰(zhàn)爭美好,孤獨(dú)進(jìn)取。膽大飛翔,成就輝煌。努力進(jìn)取,遙望,和諧家園??蓯塾巫?..
    趙原野閱讀 3,508評論 1 1

友情鏈接更多精彩內(nèi)容