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

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日

相关文章

  • 2016年最热门的15 款代码语法高亮工具,美化你的代码

    标准markdown格式的文本是一种专门用于编写文档的语言,可使您的文本看起来更具可读性。在编写代码高亮代码时,使用markdown的语法高亮功能可以轻松地让您的代码块带有更具吸引力的外观,提高代码的可读性和可维护性。下面介绍如何使用2016年最热门的15款代码语法高亮工具美化您的代码。 工具及使用说明 1. Prism Prism是基于简单的HTML,CS…

    html 2023年5月30日
    00
  • Android PopupWindow实现右侧、左侧和底部弹出菜单

    首先需要注意的是,PopupWindow是一个弹出菜单的控件,可以用于实现右侧、左侧和底部的弹出菜单。 1. 创建PopupWindow对象 使用PopupWindow需要创建PopupWindow对象。通过LayoutInflater将xml布局文件转化成View对象,并将View对象传给PopupWindow来实现弹出菜单的功能。具体过程如下: // 创…

    html 2023年5月31日
    00
  • HTML中的标签和元素的区别详解

    HTML(Hypertext Markup Language,超文本标记语言)是一种用于创建网页的标记语言。在HTML中,标签和元素是两个至关重要的概念,但它们并不是一个意思。下面将详细讲解HTML中的标签和元素的区别及其使用。 标签 标签是一种HTML代码,其通常由尖括号“<”和“>”组成,并且注明了元素的类型以及其他属性值如何组成。比如以下是…

    html 2023年5月30日
    00
  • Mac系统新建TXT文档以及出现乱码的解决办法

    下面是详细讲解Mac系统新建TXT文档以及出现乱码的解决办法的攻略: 1. Mac系统新建TXT文档的方法 Mac系统中新建TXT文档有两种方法: 方法一:使用Finder 打开Finder; 在Finder的顶部菜单栏上选择文件 > 新建文件; 文件名后缀名为txt(例如”test.txt”),然后按下回车键; 双击文件名,即可在TextEdit中打…

    html 2023年5月31日
    00
  • java使用dom4j生成与解析xml文档的方法示例

    接下来我会为您详细讲解“Java使用dom4j生成与解析XML文档的方法示例”: Dom4j简介 Dom4j是一个Java XML API。它是JAXP API之上一层的接口,可以解析XML文件以及生成新的XML文件。同时,它也支持XPath表达式。本文将通过两个示例来讲解使用Dom4j生成和解析XML文档的方法。 示例1:生成XML文档 以下是生成一个包含…

    html 2023年5月30日
    00
  • Win10 Edge浏览器怎么修改默认搜索引擎?

    以下是“Win10 Edge浏览器怎么修改默认搜索引擎?”的完整攻略: 打开Edge浏览器:首先,打开您的Edge浏览器。 打开设置:在Edge浏览器中,点击右上角的“…”按钮,然后选择“设置”选项。 打开搜索引擎设置:在“设置”页面中,选择“隐私、搜索和服务”选项。然后,选择“地址栏和搜索”选项。 修改默认搜索引擎:在“地址栏和搜索”页面中,找到“搜索…

    html 2023年5月18日
    00
  • PHP XML操作类DOMDocument

    当涉及到在PHP中处理XML文档时,DOMDocument是一种非常强大的类。DOMDocument类允许您在XML文档的树形结构中操作元素,节点和文本。下面是DOMDocument类的详细攻略,包括创建DOMDocument对象、添加子元素、读取/修改元素值、删除元素等操作。 创建DOMDocument对象 要在PHP中操作XML文档,需要首先创建DOMD…

    html 2023年5月30日
    00
  • Mybatis之#{}与${}的区别使用详解

    下面是关于”Mybatis之#{}与${}的区别使用详解”的完整攻略。 前言 Mybatis是一款优秀的ORM工具,可以大大简化我们与数据库的交互,提高开发效率。其中#{}和${}是两种常用的参数占位符,它们的语法和使用方式有所不同,下面会对其进行详细说明。 #{}与${}的区别 #{}和${}的语法 在Mybatis中,#{}和${}都是参数占位符,用于向…

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