Python爬蟲資料提取方式——使用PyQuery查詢元素
阿新 • • 發佈:2019-01-11
html = """ <div id='content'> <ul class='list'> <li class='one'>One</li> <li class='two'>Two</li> <li class='three'>Three</li> <li class='four'>Four</li> <div id='inner'> <a href='http://www.baidu.com'>百度一下</a> <p>第一段</p> <p>第2段</p> <p>第3段</p> <p> 第4段 <span>法大師傅大師傅</span> </p> <p>第5段</p> <p>第6段</p> </div> </ul> </div> """
pyquery:仿照jquery語法,封裝的一個包,和bs4有點類似。
首先:利用PyQuery類,對Html這個文件進行序列化,結果是一個文件物件
doc_obj = PyQuery(html)
print(doc_obj)
接下來:開始查詢元素的方法
從doc_obj這個物件中根據類名匹配元素
ul = doc_obj('.list')
# ul是一個物件
print(ul)
print(type(ul)
#從ul中查詢a
print(ul('a'))
當前元素物件.find(): 在當前物件中查詢後代元素
當前元素物件.chrildren(): 在當前物件中查詢直接子元素
print(ul.find('a'))
父元素查詢
parent(): 直接父元素
parents(): 所有的父元素a = ul('a')
print(a.parent('#inner'))
兄弟元素的查詢li = doc_obj('.one')
print(li.siblings())
print(li.siblings('.two'))
獲取標籤的屬性或文字(遍歷元素)ul = doc_obj('.list') # generator object res = ul('li').items() for li in res: print(li) # 獲取標籤物件的文字內容 print(li.text()) # 獲取標籤屬性 print(li.attr('class'))
獲取標籤下文字內容
inner_div = doc_obj('#inner')
p = inner_div('p')
print(p.text())