pyquery的基本使用
1、初始化
字串初始化
doc = pq(html)
檔案初始化
doc = pq(filename='demo.html')
#但是需要修改pyquery的原始碼
if 'filename' in kwargs:
#html = open(kwargs['filename'])
html = open(kwargs['filename'], "r", encoding="utf-8")
URL初始化
doc = pq(url='http://cuiqingcai.com')
#等同於
doc = pq(requests.get('http://cuiqingcai.com').text)
2、查詢
全篇以此文件為模板
html = '''
<div id="container">
<ul class="list">
<li class="item-0">first item</li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
</div>
<div class="s-main-slot s-result-list s-search-results sg-row">
<div data-asin="" data-index="0" data-uuid="123" data-component-type="" class="list1">
<li class="item-10">first item</li>
<li class="item-11"><a href="link2.html">second item</a></li>
<li class="item-10 active"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-11 active"><a href="link4.html">fourth item</a></li>
<li class="item-10"><a href="link5.html">fifth item</a></li>
</ul>
</div>
'''
class=""前面加. id前面加# 標籤前面不用加例如 li ul,同一個class的屬性追加.
以單個class的單一屬性做為篩選條件
doc = pq(html)
main_list = doc('.s-main-slot').items()
count = 0
for ml in main_list:
print(ml)
以單個class的多屬性做為篩選條件
main_list = doc('.s-main-slot.s-result-list2.s-search-results').items()
for ml in main_list:
print(ml)
以多個class的多屬性做為篩選條件
main_list = doc('.s-main-slot.s-result-list2.s-search-results .list2').items()
class和id和標籤一起做為篩選條件
main_list = doc('#container .list li').items()
找到符合篩選條件的子節點
#所有子孫節點
items = doc('.list')
lis = items.find('li')
#子節點
lis = items.children()
print(lis)
#需要使用子節點的話
lis = items.children().items()
找到符合篩選條件的父節點
#直接父節點
items = doc('.list')
container = items.parent()
#祖先節點
items = doc('.list')
parents = items.parents()
找到符合節點的兄弟節點
li = doc('.list .item-0.active')
print(li.siblings())
#新增篩選條件
print(li.siblings('.active'))
遍歷
lis = doc('li').items()
for li in lis:
print(li, type(li))
獲取資訊
a = doc('.item-0.active a')
print(a, type(a))
print(a.attr('href'))
#print(a.attr.href)
#當多節點時,需要遍歷讀取
for item in a.items():
print(item.attr('href'))
獲取文字
text()則返回了所有的li節點內部的純文字,中間用一個空格分割開,即返回結果是一個字串。
a = doc('.item-0.active a')
print(a.text())
獲取HTML文字
html()方法返回的是第一個li節點的內部HTML文字,如果得到的結果是多個節點,並且想要獲取每個節點的內部HTML文字,則需要遍歷每個節點
li = doc('.item-0.active')
print(li.html())
節點操作
li = doc('.item-0.active')
li.removeClass('active')
li.addClass('active')
attr,text,html
attr()方法只傳入第一個引數的屬性名,則是獲取這個屬性值;如果傳入第二個引數,可以用來修改屬性值。text()和html()方法如果不傳引數,則是獲取節點內純文字和HTML文字;如果傳入引數,則進行賦值。
text()方法,傳入文字之後,li節點內部的文字全被改為傳入的字串文字了
html()方法傳入HTML文字後,li節點內部又變為傳入的HTML文字了。
li.attr('name', 'link')
li.text('changed item')
li.html('<span>changed item</span>')
相關文章
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-3 使用pyqueryPython爬蟲
- xpath beautiful pyquery三種解析庫
- Python3網路爬蟲開發實踐——第4章—解析庫的使用—4.3使用pyqueryPython爬蟲
- IDA的基本使用
- git的基本使用Git
- Tomcat的基本使用Tomcat
- 示波器的基本使用:
- selenium的基本使用
- luarocks 的基本使用
- APScheduler的基本使用
- DailyRollingFileAppender的基本使用AIAPP
- github的基本使用Github
- MathJax的基本使用
- Class 的基本使用
- mysqli的基本使用MySql
- RecyclerView 的基本使用View
- Bootstrap 的基本使用boot
- egg的基本使用
- perfdog的基本使用
- Jedis的基本使用
- mybatis的基本使用MyBatis
- Vim 基本的使用
- mongoose的基本使用Go
- Vagrant 的基本使用
- Vuex的基本使用Vue
- JSCore的基本使用JS
- ContentProvider的基本使用IDE
- Promise的基本使用Promise
- jQuery的基本使用jQuery
- Urllib庫的使用一---基本使用
- 變數的基本使用變數
- Nifi:nifi的基本使用Nifi
- TreeView的基本使用 1205View
- ts + hooks 的基本使用Hook
- 1.2 Spyder的基本使用
- React ref的基本使用React
- linux expect 的基本使用Linux
- socket基本的API使用API