如何使用PyQuery库?

  • Post category:Python

PyQuery是基于jQuery语法的Python库,用于解析HTML和XML文档,而不用使用复杂的正则表达式或者DOM操作。使用PyQuery可以方便地从Web页面中提取出所需的信息。下面是使用PyQuery的完整攻略。

安装PyQuery

使用pip命令进行安装:

pip install pyquery

导入库

使用import语句导入pyquery库:

from pyquery import PyQuery as pq

创建PyQuery对象

使用pq()函数创建PyQuery对象,参数可以是字符串、URL或者文件名。下面是创建PyQuery对象的三种方式:

# 从字符串创建PyQuery对象
html = '''
<div>
    <ul>
         <li class="item-0">item1</li>
         <li class="item-1"><a href="link1.html">item2</a></li>
         <li class="item-0"><a href="link2.html">item3</a></li>
         <li class="item-1"><a href="link3.html">item4</a></li>
         <li class="item-0"><a href="link4.html">item5</a></li>
     </ul>
 </div>
'''
doc = pq(html)

# 从URL创建PyQuery对象
doc = pq(url='http://www.baidu.com')

# 从文件创建PyQuery对象
doc = pq(filename='test.html')

解析HTML文档

使用find()、children()等函数来查找HTML标签,使用text()、html()等函数来获取标签的内容。下面是一个解析HTML文档的示例:

html = '''
<div>
    <ul>
         <li class="item-0">item1</li>
         <li class="item-1"><a href="link1.html">item2</a></li>
         <li class="item-0"><a href="link2.html">item3</a></li>
         <li class="item-1"><a href="link3.html">item4</a></li>
         <li class="item-0"><a href="link4.html">item5</a></li>
     </ul>
 </div>
'''
doc = pq(html)
lis = doc('li')
for li in lis.items():
    print(li.attr('class'), li.find('a').text())

输出结果为:

item-0 item1
item-1 item2
item-0 item3
item-1 item4
item-0 item5

解析XML文档

PyQuery同样适用于解析XML文档,下面是一个解析XML文档的示例:

xml = '''
<bookstore>
    <book category="cooking">
        <title lang="en">Title1</title>
        <author>Author1</author>
        <year>2005</year>
        <price>100</price>
    </book>
    <book category="children">
        <title lang="en">Title2</title>
        <author>Author2</author>
        <year>2006</year>
        <price>50</price>
    </book>
</bookstore>
'''
doc = pq(xml)
books = doc('book')
for book in books.items():
    print(book.find('title').text(), book.find('price').text())

输出结果为:

Title1 100
Title2 50

这是PyQuery使用的简单示例,PyQuery还有更多强大的功能,如CSS选择器、伪类选择器等,可供进一步学习应用。