python爬虫之pyquary详解

        PyQuery是Python中一个强大的Web解析库,它能够将HTML页面通过CSS选择器来进行解析,十分方便实用。本文将详细介绍使用PyQuery实现Python爬虫的方法,包括PyQuery的安装、基本用法以及相关实例分析等。

一、PyQuery的安装

要使用PyQuery,需要先安装它。在命令行窗口中输入以下代码即可:

pip install pyquery

二、PyQuery的基本用法

1.导入PyQuery库

在Python中使用PyQuery库,首先要导入它。具体代码如下:

from pyquery import PyQuery as pq

2.加载HTML页面

使用PyQuery库,一般是将要解析的HTML页面加载到PyQuery对象中。具体代码如下:

html = '''
<html>
    <head>
        <title>Hello PyQuery</title>
    </head>
    <body>
        <h1>Welcome to PyQuery world</h1>
        <div class="content">
            <ul id="list">
                <li class="item-0">item1</li>
                <li class="item-1">item2</li>
                <li class="item-2">item3</li>
                <li class="item-3">item4</li>
                <li class="item-4">item5</li>
            </ul>
        </div>
    </body>
</html>
'''
doc = pq(html)

3.使用CSS选择器来查找元素

使用PyQuery库查找元素,可以使用CSS选择器来实现。具体代码如下:

doc('div') # 返回一个PyQuery对象,它包含了所有的div元素
doc('#list') # 返回一个PyQuery对象,它包含了id为list的元素
doc('.item-0') # 返回一个PyQuery对象,它包含了class为item-0的元素
doc('li:first-child') # 返回一个PyQuery对象,它包含了第一个(li)元素
doc('li:last-child') # 返回一个PyQuery对象,它包含了最后一个(li)元素
doc('li:nth-child(2)') # 返回一个PyQuery对象,它包含了第二个(li)元素

4.获取元素的属性和文本值

如果需要获取PyQuery对象中的元素属性和文本值,可以使用.attr()和.text()方法。具体代码如下:

a = doc('.item-0')
print(a.attr('class')) # 输出:item-0
print(a.text()) # 输出:item1

5.遍历元素

PyQuery对象支持遍历操作。具体方法如下:

lis = doc('li')
for li in lis.items()
    print(li.text())

6.修改元素的属性和文本值

如果需要修改PyQuery对象中的元素属性和文本值,可以使用.attr()和.text()方法。具体代码如下:

a = doc('.item-0')
a.attr('class', 'new-class') # 将a元素的class属性改为new-class
a.text('new text') # 将a元素的文本值改为new text

三、PyQuery的实践应用

在实际的爬虫应用中,PyQuery库也十分实用。接下来我们将通过两个实例来具体分析PyQuery的应用。

1.实例一:爬取斗破苍穹小说的章节

本实例中,我们将使用PyQuery库来爬取斗破苍穹小说的章节内容。

import requests
from pyquery import PyQuery as pq

url = 'https://www.bequge.com/book/16532/37031231.html'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

response= requests.get(url, headers=headers)
if response.status_code == 200:
doc = pq(response.text)
title = doc(‘title’).text() # 获取小说的标题
content = doc(‘#content’).text() # 获取小说的内容
print(title)
print(content)
else:
print(‘请求错误。’)


首先,我们设置了目标网站的URL地址,并使用requests库发送了GET请求。如果请求返回状态码为200,我们将通过PyQuery库解析HTML页面,获取小说的标题和内容,并将其输出到控制台上。

2.实例二:爬取去哪儿网的热门景点

本实例中,我们将使用PyQuery库来爬取去哪儿网上的热门景点。

import requests
from pyquery import PyQuery as pq

url = ‘https://travel.qunar.com/p-cs299782-changsha-jingdian’
headers = {
‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3’
}

response = requests.get(url, headers=headers)
if response.status_code == 200:
doc = pq(response.text)
items = doc(‘.list_item.clearfix’).items() # 获取所有景点列表项
for item in items:
title = item.find(‘.ellipsis’).text() # 获取景点名称
address = item.find(‘.address.color999’).text() # 获取景点地址
grade = item.find(‘.product_star_level em’).text() # 获取景点评分
print(title, address, grade)
else:
print(‘请求错误。’)


首先,我们同样设置了目标网站的URL地址,并使用requests库发送了GET请求。如果请求返回状态码为200,我们将通过PyQuery库解析HTML页面,获取所有景点列表项,并遍历每一个列表项获取景点的名称、地址和评分信息,并将其输出到控制台上。

四、总结

本文介绍了PyQuery库的安装、基本用法以及两个实践应用。PyQuery库能够很好地与Python爬虫进行整合,提高我们的工作效率。如果您对Python爬虫和PyQuery库感兴趣,可以尝试自己动手实现更多的实例,进一步了解和掌握相关技术。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

然然学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值