一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python 爬蟲(chóng)(五):PyQuery 框架

 文炳春秋 2020-03-13

PyQuery 是仿照 jQuery 實(shí)現(xiàn)的,語(yǔ)法與 jQuery 幾乎完全相同,如果你熟悉 jQuery,又不想再記一套 BeautifulSoup (Python 爬蟲(chóng)(三):BeautifulSoup 庫(kù)) 的調(diào)用方法,那么 PyQuery 是一個(gè)很好的選擇。

1 準(zhǔn)備工作

1.1 安裝

使用如下終端命令安裝

pip install pyquery

安裝完成后導(dǎo)包

from pyquery import PyQuery as pq

1.2 初始化

傳入字符串

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>
        <ul id="container">
            <li class="l1">l1</li>
            <li class="l2">l2</li>
            <li class="l3">l3</li>
        </ul>
    </body>
</html>
'''
doc = pq(html)
print(type(doc))
print(doc)

傳入文件

from pyquery import PyQuery as pq

doc= pq(filename='p.html')
print(type(doc))
print(doc)

傳入 lxml.etree

from pyquery import PyQuery as pq
from lxml import etree

doc = pq(etree.fromstring('<html><title>Hello PyQuery</title></html>'))
print(type(doc))
print(doc)

傳入 URL

from pyquery import PyQuery as pq
doc = pq('http://www.baidu.com')
print(type(doc))
print(doc)

2 快速上手

2.1 基本使用

獲取元素

首先,我們使用 PyQuery 的 CSS 選擇器獲取指定元素。示例如下:

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>
        <ul id="container">
            <li class="l1">l1</li>
            <li class="l2">l2</li>
            <li class="l3">l3</li>
        </ul>
    </body>
</html>
'''
doc = pq(html)
# 獲取 ul
ul = doc('#container')
# 獲取 li
li = doc('ul li')
print(ul)
print(li)

遍歷元素

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>
        <ul id="container">
            <li class="l1">l1</li>
            <li class="l2">l2</li>
            <li class="l3">l3</li>
        </ul>
    </body>
</html>
'''
doc = pq(html)
# 遍歷 li
lis =doc('li').items()
for li in lis:
     print(li)

存在多個(gè)相同元素時(shí),獲取指定元素

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>
        <ul id="container">
            <li class="l1">l1</li>
            <li class="l2">l2</li>
            <li class="l3">l3</li>
        </ul>
    </body>
</html>
'''
doc = pq(html)
lis =doc('li').items()
# 獲取第二個(gè) li
l2 = list(lis)[1]
print(l2)

獲取父、子、兄弟元素

PyQuery 可以通過(guò)方法直接獲取指定元素的父、子、兄弟元素。示例如下:

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>

        <ul></ul>
        <ul id="container">
            <li class="l1">l1</li>
            <li class="l2">l2</li>
            <li class="l3">l3</li>
        </ul>
        <ul></ul>
    </body>
</html>
'''
doc = pq(html)
ul = doc('#container')
l2 = doc('#container .l2')
# 獲取 ul 父元素
ul_parent = ul.parent()
# 獲取 ul 子元素
ul_child = ul.children()
# 獲取第二個(gè) li 兄弟元素
l2_sib = l2.siblings()
print(ul_parent)
print(ul_child)
print(l2_sib)

獲取屬性、文本信息

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title name='title'>Hello PyQuery</title>
    </head>
</html>
'''
doc = pq(html)
title =doc('title')
# 獲取 name 屬性
print(title.attr('name'))
# 獲取 title 標(biāo)簽文本信息
print(title.text())

獲取 html

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>
        <ul id="container">
            <li class="l1">l1</li>
            <li class="l2">l2</li>
            <li class="l3">l3</li>
        </ul>
    </body>
</html>
'''
doc = pq(html)
# 獲取 ul 中 html
ul =doc('ul')
print(ul.html())

2.2 偽類(lèi)選擇器

偽類(lèi)可以根據(jù)一個(gè)元素的特征進(jìn)行分類(lèi),下面通過(guò)示例了解下偽類(lèi)選擇器的使用。

from pyquery import PyQuery as pq

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>
        <ul id="container">
            <li class="l1">l1</li>
            <li class="l2">l2</li>
            <li class="l3">l3last</li>
        </ul>
    </body>
</html>
'''
doc = pq(html)
# 設(shè)置起始位置
lis = doc('li:gt(-1)')
# 獲取第一個(gè) li
fli = doc('li:first-child')
# 獲取最后一個(gè) li
lli = doc('li:last-child')
# 獲取指定 li
l2 = doc('li:nth-child(2)')
# 獲取包含 last 的 li
cli = doc('li:contains("last")')
print(lis)
print(fli)
print(lli)
print(l2)
print(cli)

參考:

https:///pyquery/api.html



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    亚洲中文字幕有码在线观看| 国产激情一区二区三区不卡| 欧洲一区二区三区自拍天堂| 日韩高清中文字幕亚洲| 日韩成人免费性生活视频| 欧美黑人精品一区二区在线| 久久精品亚洲情色欧美| 亚洲欧洲成人精品香蕉网| 亚洲av一区二区三区精品| 黄色片一区二区在线观看| 亚洲夫妻性生活免费视频| 色婷婷视频国产一区视频| 国产成人亚洲欧美二区综| 亚洲欧美国产中文色妇| 大香蕉再在线大香蕉再在线| 欧美日韩一区二区三区色拉拉| 中文字幕精品一区二区三| 一区二区日韩欧美精品| 狠狠做深爱婷婷久久综合| 国产精品丝袜美腿一区二区| 日本午夜福利视频免费观看| 日本午夜福利视频免费观看| 久久99一本色道亚洲精品| 中文字幕一区二区免费| 亚洲五月婷婷中文字幕| 麻豆精品视频一二三区| 青青操成人免费在线视频| 欧美一区二区口爆吞精| 久久本道综合色狠狠五月| 欧美一级特黄特色大色大片| 日韩人妻免费视频一专区 | 亚洲一区二区亚洲日本| 婷婷色国产精品视频一区| 欧美大粗爽一区二区三区| 久热久热精品视频在线观看| 成人欧美一区二区三区视频| 国产精品久久男人的天堂| 中文字幕在线五月婷婷| 国产成人精品一区在线观看| 久久99这里只精品热在线| 日本人妻熟女一区二区三区|