国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python解析html開發(fā)庫pyquery使用方法

2019-11-25 18:32:11
字體:
供稿:網(wǎng)友

例如

復(fù)制代碼 代碼如下:

<div id="info">
<span><span class='pl'>導(dǎo)演</span>: <a href="/celebrity/1047989/" rel="v:directedBy">湯姆?提克威</a> / <a href="/celebrity/1161012/" rel="v:directedBy">拉娜?沃卓斯基</a> / <a href="/celebrity/1013899/" rel="v:directedBy">安迪?沃卓斯基</a></span><br/>
<span><span class='pl'>編劇</span>: <a href="/celebrity/1047989/">湯姆?提克威</a> / <a href="/celebrity/1013899/">安迪?沃卓斯基</a> / <a href="/celebrity/1161012/">拉娜?沃卓斯基</a></span><br/>
<span><span class='pl'>主演</span>: <a href="/celebrity/1054450/" rel="v:starring">湯姆?漢克斯</a> / <a href="/celebrity/1054415/" rel="v:starring">哈莉?貝瑞</a> / <a href="/celebrity/1019049/" rel="v:starring">吉姆?布勞德本特</a> / <a href="/celebrity/1040994/" rel="v:starring">雨果?維文</a> / <a href="/celebrity/1053559/" rel="v:starring">吉姆?斯特吉斯</a> / <a href="/celebrity/1057004/" rel="v:starring">裴斗娜</a> / <a href="/celebrity/1025149/" rel="v:starring">本?衛(wèi)肖</a> / <a href="/celebrity/1049713/" rel="v:starring">詹姆斯?達(dá)西</a> / <a href="/celebrity/1027798/" rel="v:starring">周迅</a> / <a href="/celebrity/1019012/" rel="v:starring">凱斯?大衛(wèi)</a> / <a href="/celebrity/1201851/" rel="v:starring">大衛(wèi)?吉雅西</a> / <a href="/celebrity/1054392/" rel="v:starring">蘇珊?薩蘭登</a> / <a href="/celebrity/1003493/" rel="v:starring">休?格蘭特</a></span><br/>
<span class="pl">類型:</span> <span property="v:genre">劇情</span> / <span property="v:genre">科幻</span> / <span property="v:genre">懸疑</span><br/>
<span class="pl">官方網(wǎng)站:</span> <a rel="nofollow" target="_blank">cloudatlas.warnerbros.com</a><br/>
<span class="pl">制片國(guó)家/地區(qū):</span> 德國(guó) / 美國(guó) / 香港 / 新加坡<br/>
<span class="pl">語言:</span> 英語<br/>
<span class="pl">上映日期:</span> <span property="v:initialReleaseDate" content="2013-01-31(中國(guó)大陸)">2013-01-31(中國(guó)大陸)</span> / <span property="v:initialReleaseDate" content="2012-10-26(美國(guó))">2012-10-26(美國(guó))</span><br/>
<span class="pl">片長(zhǎng):</span> <span property="v:runtime" content="134">134分鐘(中國(guó)大陸)</span> / 172分鐘(美國(guó))<br/>
<span class="pl">IMDb鏈接:</span> <a target="_blank" rel="nofollow">tt1371111</a><br>
<span class="pl">官方小站:</span>
<a target="_blank">電影《云圖》</a>
</div>

復(fù)制代碼 代碼如下:

from pyquery import PyQuery as pq
doc=pq(url='http://movie.douban.com/subject/3530403/')
data=doc('.pl')
for i in data:
    print pq(i).text()

輸出

復(fù)制代碼 代碼如下:

導(dǎo)演
編劇
主演
類型:
官方網(wǎng)站:
制片國(guó)家/地區(qū):
語言:
上映日期:
片長(zhǎng):
IMDb鏈接:
官方小站:

用法

用戶可以使用PyQuery類從字符串、lxml對(duì)象、文件或者url來加載xml文檔:

復(fù)制代碼 代碼如下:

>>> from pyquery import PyQuery as pq
>>> from lxml import etree
>>> doc=pq("<html></html>")
>>> doc=pq(etree.fromstring("<html></html>"))
>>> doc=pq(filename=path_to_html_file)
>>> doc=pq(url='http://movie.douban.com/subject/3530403/')

可以像jQuery一樣選擇對(duì)象了

復(fù)制代碼 代碼如下:

>>> doc('.pl')
[<span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span#rateword.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <p.pl>]

這樣,class為'pl'的對(duì)象就全部選擇出來了。

不過在使用迭代時(shí)需要對(duì)文本進(jìn)行重新封裝:

復(fù)制代碼 代碼如下:

for para in doc('.pl'):
    para=pq(para)
    print para.text()  
導(dǎo)演
編劇
主演
類型:
官方網(wǎng)站:
制片國(guó)家/地區(qū):
語言:
上映日期:
片長(zhǎng):
IMDb鏈接:
官方小站:

這里得到的text是unicode碼,如果要寫入文件需要編碼為字符串。
用戶可以使用jquery提供的一些偽類(但還不支持css)來進(jìn)行操作,諸如:

復(fù)制代碼 代碼如下:

>>> doc('.pl:first')
[<span.pl>]
>>> print  doc('.pl:first').text()
導(dǎo)演

Attributes
獲取html元素的屬性

復(fù)制代碼 代碼如下:

>>> p=pq('<p id="hello" class="hello"></p>')('p')
>>> p.attr('id')
'hello'
>>> p.attr.id
'hello'
>>> p.attr['id']
'hello'

賦值

復(fù)制代碼 代碼如下:

>>> p.attr.id='plop'
>>> p.attr.id
'plop'
>>> p.attr['id']='ola'
>>> p.attr.id
'ola'
>>> p.attr(id='hello',class_='hello2')
[<p#hello.hell0>]

Traversing
過濾

復(fù)制代碼 代碼如下:

>>> d=pq('<p id="hello" class="hello"><a/>hello</p><p id="test"><a/>world</p>')
>>> d('p').filter('.hello')
[<p#hello.hello>]
>>> d('p').filter('#test')
[<p#test>]
>>> d('p').filter(lambda i:i==1)
[<p#test>]
>>> d('p').filter(lambda i:i==0)
[<p#hello.hello>]
>>> d('p').filter(lambda i:pq(this).text()=='hello')
[<p#hello.hello>]

按照順序選擇

復(fù)制代碼 代碼如下:

>>> d('p').eq(0)
[<p#hello.hello>]
>>> d('p').eq(1)
[<p#test>]

選擇內(nèi)嵌元素

復(fù)制代碼 代碼如下:

>>> d('p').eq(1).find('a')
[<a>]

選擇父元素

復(fù)制代碼 代碼如下:

>>> d=pq('<p><span><em>Whoah!</em></span></p><p><em> there</em></p>')
>>> d('p').eq(1).find('em')
[<em>]
>>> d('p').eq(1).find('em').end()
[<p>]
>>> d('p').eq(1).find('em').end().text()
'there'
>>> d('p').eq(1).find('em').end().end()
[<p>, <p>]

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 玉树县| 贺州市| 大渡口区| 昌宁县| SHOW| 和政县| 双鸭山市| 江都市| 遵化市| 冀州市| 阿瓦提县| 利津县| 榆林市| 交城县| 剑河县| 裕民县| 江门市| 建始县| 聊城市| 沈阳市| 紫云| 青海省| 舞阳县| 汶川县| 苍山县| 连江县| 城步| 龙口市| 雷波县| 开原市| 双辽市| 红安县| 宜川县| 雷山县| 清镇市| 丹江口市| 株洲市| 新平| 庆阳市| 临海市| 黔西|