使用pyquery简单爬取网页中文本中数据

案例

1.通过pyquery定位如下html源码中的第二对儿ul中的li文本(使用CSS选择器实现,不要用下标索引)。

源代码:

from pyquery import PyQuery as pq

html = """
<div class="div">
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ul>
    <ul>
        <li>9</li>
        <li>10</li>
    </ul>
</div>
"""
doc = pq(html)

a = (doc(ul:last-child))
print(a.text())
b = (doc(.div ul+ul))
print(b.text())

运行结果:

D:PyCharmProjectvenvScriptspython.exe D:/PyCharmProject/Test10/1.py
9
10
9
10

Process finished with exit code 0

2.对例中所有的li节点,奇数节点添加class值:active-0,偶数节点添加class值:active-1。

源代码:

from pyquery import PyQuery as pq

html = """
<div class="div">
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ul>
    <ul>
        <li>9</li>
        <li>10</li>
    </ul>
</div>
"""
doc = pq(html)
li = doc(li)

oddLi = li(li:nth-child(odd))   #奇数
evenLi = li(li:nth-child(even))  #偶数

oddLi = oddLi.add_class(active-0)
evenLi = evenLi.add_class(active-1)

print(li)

运行结果:

D:PyCharmProjectvenvScriptspython.exe D:/PyCharmProject/Test10/2.py
<li class="active-0">1</li>
        <li class="active-1">2</li>
        <li class="active-0">3</li>
        <li class="active-1">4</li>
        <li class="active-0">5</li>
        <li class="active-1">6</li>
        <li class="active-0">7</li>
        <li class="active-1">8</li>
    <li class="active-0">9</li>
        <li class="active-1">10</li>
    

Process finished with exit code 0
经验分享 程序员 微信小程序 职场和发展