python网络爬虫精解之pyquery的使用说明

yizhihongxing

Python 网络爬虫精解之 PyQuery 的使用说明

1. PyQuery 简介

PyQuery 是 Python 网络爬虫中常用的 HTML/XML 解析库之一。它是基于 jQuery 核心思想的 Python 实现,使用方式与 jQuery 类似,支持静态解析和动态解析。

PyQuery 让选取特定元素变得轻松,提供简单易用的 API,用于解析HTML、XML文档。PyQuery 库中包装了 lxml 库,使得 XPath 可以被解析。

2. PyQuery 的安装和使用

2.1 安装 PyQuery

在Linux/Unix、Windows上都可以使用 pip 进行安装,命令如下:

pip install pyquery

或者使用 conda 安装:

conda install pyquery

2.2 使用 PyQuery

2.2.1 Pyquery 的基本用法

使用 PyQuery 前需要导入库:

from pyquery import PyQuery as pq

Pyquery 常与 requests 配合使用:

import requests
from pyquery import PyQuery as pq

html = requests.get('https://cuiqingcai.com').text
doc = pq(html)
print(doc('title'))

2.2.2 Pyquery 的选择器

常见的选择器有:

  • 标签选择器
doc('p') #选取所有p标签
  • 类选择器
doc('.item') #选取 class="item" 的所有标签
  • ID 选择器
doc('#container') #选取id="container" 的标签
  • 属性选择器
doc('[href]') #选取有 href 属性的标签
doc('[name="keywords"]') #选取 name="keywords" 的标签
  • 后代选择器
doc('ul li') #选取 ul 标签下的所有 li 标签
  • 子元素选择器
doc('ul > li') #选取 ul 标签下的儿子 li 标签

2.2.3 Pyquery 的属性、文本、HTML 方法

使用 Pyquery 获取元素的属性、文本和HTML:

import requests
from pyquery import PyQuery as pq

html = requests.get('https://cuiqingcai.com').text
doc = pq(html)
a = doc('.nav').find('a')
print(a.attr('href'))
print(a.text())
print(a.html())

2.2.4 其他常用的 PyQuery 方法

  • find 方法:查找子元素
doc('.wrap').find('li') #找到 class="wrap" 的标签下的 li 标签
  • parent 方法:查找父元素
doc('.wrap li').parent() #找到 li 的父元素
  • next 方法:查找下一个兄弟元素
doc('.wrap li:first-child').next() #找到 class="wrap" 的标签下第一个 li 标签的下一个兄弟元素
  • siblings 方法:查找所有兄弟元素
doc('.wrap li:first-child').siblings() #找到 class="wrap" 的标签下第一个 li 标签的所有兄弟元素

3. PyQuery 示例

3.1 获取百度首页 Logo 的链接

import requests
from pyquery import PyQuery as pq

url = 'https://www.baidu.com'
html = requests.get(url).text
doc = pq(html)
logo = doc('#logo').find('a').attr('href')
print('百度首页Logo链接:', logo)

输出结果:

百度首页Logo链接: //www.baidu.com/

3.2 获取豆瓣电影Top250

import requests
from pyquery import PyQuery as pq

base_url = 'https://movie.douban.com/top250?start='
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
}

def get_movies(start):
    url = base_url + str(start)
    html = requests.get(url, headers=headers).text
    doc = pq(html)
    movie_list = doc('.grid_view li').items()
    for movie in movie_list:
        yield {
            '电影名称': movie('.title').text(),
            '电影评分': movie('.rating_num').text(),
            '评价人数': movie('.star span:last-child').text(),
            '引言': movie('.inq').text(),
            '电影链接': movie('.hd a').attr('href')
        }

for start in range(0, 250, 25):
    for item in get_movies(start):
        print(item)

输出结果:

{'电影名称': '肖申克的救赎', '电影评分': '9.7', '评价人数': '2149395人评价', '引言': '希望让人自由。', '电影链接': 'https://movie.douban.com/subject/1292052/'}
{'电影名称': '霸王别姬', '电影评分': '9.6', '评价人数': '1584587人评价', '引言': '风华绝代。', '电影链接': 'https://movie.douban.com/subject/1291546/'}
{'电影名称': '阿甘正传', '电影评分': '9.5', '评价人数': '1746269人评价', '引言': '一部美国近现代史。', '电影链接': 'https://movie.douban.com/subject/1292720/'}
...

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python网络爬虫精解之pyquery的使用说明 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Jquery乱码的一次解决过程 图解教程

    下面是针对“Jquery乱码的一次解决过程 图解教程”的完整攻略。 问题描述 在使用jQuery的ajax方法请求服务器返回的中文数据时,经常会出现乱码现象。这个问题在我们日常开发中经常遇到。 乱码原因 这种问题的出现是因为后端服务器返回的结果是GBK编码格式,而前端页面使用的是UTF-8编码格式。这样就会导致中文显示为乱码。 解决方案 方案一:后端进行编码…

    html 2023年5月31日
    00
  • Android开发人脸识别统计人脸数

    首先我们需要明确一下本文要介绍的内容——“Android开发人脸识别统计人脸数”,其实这个内容涉及到两个方面:人脸识别和人脸数统计。 一、人脸识别 在Android开发中,我们可以使用OpenCV对人脸进行识别。接下来,我简要介绍一下OpenCV的使用。 1.1 导入OpenCV库 在项目的build.gradle中添加OpenCV库的依赖: impleme…

    html 2023年5月31日
    00
  • MBR怎么转换为GPT?硬盘MBR格式转换成GPT格式教程

    以下是将MBR格式转换为GPT格式的完整攻略: 备份数据:在进行MBR转换为GPT的操作之前,您需要备份硬盘中的所有数据。因为转换过程中可能会导致数据丢失,所以请务必备份数据。 打开磁盘管理器:在备份好数据之后,您需要打开磁盘管理器。在Windows操作系统中,您可以按下Win+X键,然后选择“磁盘管理”选项来打开磁盘管理器。 删除所有分区:在磁盘管理器中,…

    html 2023年5月17日
    00
  • 解决易语言编程乱码的问题

    问题描述:易语言在编写程序时,由于不支持Unicode编码,容易出现乱码的问题。 解决方案:有两种方法可以解决易语言编程乱码的问题。 方法一:使用GB2312编码 1.在易语言中,默认使用GB2312编码,所以在编写程序时,尽量使用GB2312编码来避免出现乱码的问题。 2.在打开文本文件时,使用“Ascii打开”或“文件打开”命令,指定读取文件所使用的编码…

    html 2023年5月31日
    00
  • 抖音短视频怎么拍最好?抖音视频拍摄技巧分享

    以下是“抖音短视频怎么拍最好?抖音视频拍摄技巧分享”的完整攻略: 抖音短视频怎么拍最好?抖音视频拍摄技巧分享 抖音是一款非常流行的短视频应用程序,用户可以通过抖音拍摄和分享自己的短视频。下面是一些抖音视频拍摄技巧,可以帮助用户拍摄出更好的短视频。 技巧1:选择好的拍摄场景 拍摄场景是拍摄好短视频的关键。用户需要选择一个有趣、有特色的场景,以便更好地吸引观众的…

    html 2023年5月18日
    00
  • springtomize2怎么用 springtomize2教程及功能详细介绍(附springtomize2下载)

    以下是Springtomize2的使用攻略: 下载安装Springtomize2:您可以在Cydia应用商店中搜索并下载Springtomize2。安装完成后,重新启动设备。 打开Springtomize2:在设备重新启动后,打开Springtomize2应用。 选择要修改的选项:在Springtomize2应用中,您可以选择要修改的选项,例如图标大小、字体…

    html 2023年5月17日
    00
  • java生成XML的方法【附demo源码下载】

    Java生成XML的方法 XML是一种非常常用的数据传输格式,而Java提供了多种生成XML的方法,本文将介绍一些Java生成XML的方法,并提供源码示例和使用说明。 Java生成XML方法 以下是一些Java生成XML的方法: 1. 使用Java DOM API Java DOM API可以将XML格式的文件转换为一个DOM对象,然后可以通过调用DOM对象…

    html 2023年5月30日
    00
  • asp.net URL中包含中文参数造成乱码的解决方法

    当ASP.NET的URL地址中包含中文参数时,会遇到URL乱码的问题,这是因为URL中的中文字符默认是被编码的,如果没有进行正确的解码,就会造成乱码的问题。 解决方法如下: 1.使用HttpUtility.UrlEncode和HttpUtility.UrlDecode进行编码和解码 ASP.NET提供了HttpUtility.UrlEncode和HttpUt…

    html 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部