使用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
