python爬虫--pyquery解析库整理

news2024/11/27 19:51:11

前言

欢迎来到我的博客

个人主页:北岭敲键盘的荒漠猫-CSDN博客

本文整理python的爬虫解析库pyquery的语法

简洁快速的整理,建议有前端基础的人看

pyquery解析原理

pyquery的原理就是拿到网站的前端源码后,我们根据我们需求信息所在的标签进行筛选。

选出指定类的标签,或者指定id,指定标签内部的标签。

然后再从这些标签中进行提取我们的信息。

pyquery安装

输入命令

pip install pyquery

初始化

1.内置请求,现请求现处理

from pyquery import PyQuery as pq
doc=pq(url="http://xiaodi8.com/",encoding="utf-8")
print(doc("a"))

这里直接用内置的请求方式请求了网站,然后从中挑选出了a标签。

2.从文本中解析源代码

from pyquery import PyQuery as pq
doc=pq(filename="111.txt", encoding="utf-8")
print(doc("a"))

3.利用requests定制请求,再进行解析

from pyquery import PyQuery as pq
import requests
res=requests.get("http://xiaodi8.com/")
res.encoding="utf-8"
doc=pq(res.text)
print(doc("a"))

 

内容解析

之前说过,这个库的原理就是筛选相应内容所在的标签。

那么我们会对筛选标签的准确程度有很高的要求。

所以pyquery直接上了前端jquery的选择器相应的形式。

如果你有前端开发的经验,可以直接上手。

查阅文档:

jQuery 选择器_w3cschool

jquery在线手册|jQuery API中文手册|jQuery速查表|jQuery参考手册|jQuery API|jQuery在线文档|jQuery最新手册

基础用法跟css选择器几乎相同。

.aaa代表选择属于me类的标签

#bbb代表id为bbb的标签

*代表所有标签

from pyquery import PyQuery as pq
import requests
res=requests.get("http://xiaodi8.com/")
res.encoding="utf-8"
doc=pq(res.text)
print(doc("a"))

这串代码中的

doc=pq(res.text)
print(doc("a"))

实例化对象后,直接传入相关的选择规则即可。这里案例是选择出a标签

这里简单一提:具体详细的选择器可以查看文档或者看看我之前整理的css的基础选择器大体了解一下。

css选择器整理-CSDN博客

css复合选择器-CSDN博客 

模糊匹配

有时候可能我们会遇到特别的情况,比如某些标签都有一个id属性。

这些id属性都有某个单词混在里面。

我们需要模糊匹配,就可以用下面模版。

doc('li[id*="hello"]')  #id中含有hello的li标签
doc('li[id^="hello"]')  #id中以hello开头的li标签
doc('li[id$="hello"]')  #id中以hello结尾的li标签

取得数据内容

我们经过上一步内容的解析之后,我们可以看到我们得到的是相关的标签,而不是我们要的内容。

我们要的内容有两种情况,有时我们要的是这个标签中的某个属性,或者有时我们要的实际上就是标签中间的字。这时候就需要我们根据不同的需求来改编代码。

获取目标标签的属性

a标签是超链接,那么超链接通常是带有href指向指定网址的属性。我们尝试获取这些属性。

使用下面代码样式。

#导入库
from pyquery import PyQuery as pq
import requests
#请求网址
res=requests.get("http://xiaodi8.com/")
res.encoding="utf-8"
#实例化对象
doc=pq(res.text)
#筛选出a标签
lista=doc("a")
#把a标签的href属性一次迭代给a并输出
for a in lista.items():
    print(a.attr("href"))
    #最后这个代码也可以用这个形式
    #print(a.attr.href)

获取目标内容

一个标签中间有时是写在里面一些文字内容的。

我们想要提取出来可以用下面模板。

#导入库
from pyquery import PyQuery as pq
import requests
#请求网址
res=requests.get("http://xiaodi8.com/")
res.encoding="utf-8"
#实例化对象
doc=pq(res.text)
#筛选出a标签
lista=doc("a")
#把a标签的href属性一次迭代给a并输出
for a in lista.items():
    print(a.text())
    #最后这个代码也可以用这个形式
    #print(a.html())

案例演示

这里爬取萧瑟迪博客左侧网站导航栏的各个名称案例演示

观察网站样式

本次目标是获取这些导航栏的内容还有对应的网址。

我们观察代码结构

发现这些代码都是在ul标签中的li标签中的a标签。

而在li标签中,都有navbar。

那么思路就是抓取源码,之后筛选id属性有navbar的标签,打印出他指向的网址和标签的内容即可

代码样式

#导入库
from pyquery import PyQuery as pq
import requests
#请求网址
res=requests.get("http://xiaodi8.com/")
res.encoding="utf-8"
#实例化对象
doc=pq(res.text)
#筛选出a标签
lista=doc("ul li[id*='navbar'] a")
#把a标签的href属性一次迭代给a并输出
for a in lista.items():
    print(a.text(),end="  ")
    print(a.attr("href"))

比较简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言第15篇

1.阅读下面的程序 #include<stdio.h> void main() { int i,j; i010; j9; printf("%d,%d",i-j,ij); } 则程序的运行结果是________. A) 1,19 B) -1,19 C) 1,17 D) -1,17 提示&#xff1a;八进制 2.以下程序段__________. x-1; do { xx*…

Aria2安装和使用-Mac版

起因是需要网盘下载&#xff0c;无奈限速很烦&#xff0c;查找很多方案后&#xff0c;最终决定使用Aria2 Tampermonkey。 其中Aria2是一款开源轻量的下载软件&#xff0c;简单来说就是可以通过URL直接下载。 Tampermonkey则是一款插件&#xff0c;我这里是.crx结尾的谷歌插件…

WPF调用CEF插件运行时启动CefSharp.BrowserSubprocess.exe三个进程

cefsharp.browsersubprocess.exe 是CefSharp&#xff08;一个基于Chromium的开源浏览器控件&#xff09;的一部分。这个可执行文件通常在以下情况下启动&#xff1a; 渲染进程&#xff1a;CefSharp使用多进程架构&#xff0c;类似于Chrome浏览器。cefsharp.browsersubprocess.e…

【网络】HTTPS——HTTP的安全版本

1.HTTP的问题 1、使用明文通信 HTTP协议不具备给通讯内容加密的功能&#xff0c;所有使用HTTP协议通信的请求和响应的内容无法进行加密,都是使用明文发送。由于HTTP属于TCP/IP协议族的协议&#xff0c;按照TCP/IP协议族的通讯机制&#xff0c;HTTP在整个通讯线路上都存在被窃听…

商务场合的白酒艺术,助你轻松搭建人脉

在繁忙的商务世界中&#xff0c;每一次会面都可能是开启新机遇的钥匙。而在这些重要的场合中&#xff0c;白酒不仅仅是一种饮品&#xff0c;更是一种文化的载体、一种沟通的桥梁。今天&#xff0c;就让我们一起探讨如何在商务场合中&#xff0c;通过豪迈白酒&#xff08;HOMANL…

深度好文:从《黑神话:悟空》看未来游戏趋势:高互动性、个性化与全球化

引言 在数字时代的浪潮中&#xff0c;游戏产业以其独特的魅力和无限的可能性&#xff0c;成为了全球娱乐文化的重要组成部分。随着科技的飞速发展&#xff0c;特别是高性能计算和人工智能技术的突破&#xff0c;游戏的世界变得越来越真实、细腻且富有深度。而在这股技术洪流中…

从0-1建一个webpack/vue项目,熟悉一下webpack知识点

以下配置项部分优化来自于国内直连GPT/Claude 第一步 首先整个新文件夹&#xff0c;打开终端&#xff0c;然后创建一个新目录&#xff0c;或者直接在vscode里面建个新文件夹&#xff0c;并进入该目录&#xff1b; mkdir my-vue-webpack-project第二步 进入当前目录 cd my-v…

SpringBoot项目多线程实现定时任务-只需要三步

众所周知&#xff0c;项目中需要使用定时任务发布的需求时非常常见的&#xff0c;例如&#xff1a;数据同步&#xff0c;清理垃圾文件&#xff0c;清理过期用户等需求&#xff0c;可能需要我们定时去清理数据。 但是我们如果集成xxl-job&#xff0c;Quartz&#xff0c;spring …

IPC 进程间通信方式

IPC对象(共享内存) 共享内存&#xff1a; 1.是一块&#xff0c;内核预留的空间 2.最高效的通信方式 //避免了用户空间 到 内核空间的数据拷贝 用中间那个get函数&#xff0c;就可以使key与共享内存一一对应 怎么将共享内存与进程关联起来 //step1 产生key值 ftok: 功能&am…

鸿蒙内核源码分析——(自旋锁篇)

本篇说清楚自旋锁 读本篇之前建议先读系列篇 进程/线程篇. 内核中哪些地方会用到自旋锁?看图: 概述 自旋锁顾名思义&#xff0c;是一把自动旋转的锁&#xff0c;这很像厕所里的锁&#xff0c;进入前标记是绿色可用的&#xff0c;进入格子间后&#xff0c;手一带&#xff0c…

「黑神话:悟空」员工疯狂被挖!打工天命人急改备注……

一部国产3A大作「黑神话:悟空」横空出世&#xff0c;震动了全球&#xff0c;冲上多国销量榜首。 尤其对于中国玩家以及中国游戏市场来说&#xff0c;这款产品实在让大家等了太久&#xff0c;最让人意外的是&#xff0c;昔日那些喊着电子鸦片的大媒体&#xff0c;也话风一转&…

高级列表组件ReList

高级列表组件ReList 组件实现基于 Vue3 Element Plus Typescript&#xff0c;同时引用 vueUse lodash-es tailwindCss (不影响功能&#xff0c;可忽略) 主要基于JSX风格实现高度动态的列表渲染组件&#xff0c;可以通过信息配置Metas配置控制信息项展示&#xff0c;同时支持…

数学基础(二)

一、导数 导数计算&#xff1a; 偏导数&#xff1a; 方向导数&#xff1a; 梯度&#xff1a; 函数在某点的梯度是一个向量&#xff0c;它的方向余方向导数最大值取得的方向一致。其大小正好是最大的方向导数 二、微积分 面积由来&#xff1a; 切线&#xff1a; 定积分&#x…

[Linux]如何在虚拟机安装Ubuntu?(小白向)

一、我们为什么要在虚拟机中安装Ubuntu? 在虚拟机中安装系统主要是为了让一个系统与我们原本的系统隔离&#xff0c;不管是想运行一些不安全的软件&#xff0c;或者是想运行一些独特的操作系统&#xff0c;我们都可以选择使用虚拟机来安装和隔离这些操作系统。如果你是一位Lin…

PMP–知识卡片--工作分解结构WBS元素

WBS包含如下几种元素&#xff1a; &#xff08;1&#xff09;子项目&#xff1a;子项目是整个项目的一部分&#xff0c;它可以被相对独立地作为“项目”进行管理&#xff0c;可以由一个专业团队或一个分包组织负责&#xff1b; &#xff08;2&#xff09;控制账户&#xff1a;控…

爆款来袭!AI萌娃T台秀,单条视频千万级播放量,制作方法竟如此简单!

大家好&#xff0c;我是小奇&#xff0c;一名热衷于分享AI副业项目的普通博主。不管你是AI小白还是老手&#xff0c;我都能帮你轻松上手&#xff0c;用AI技术赚钱。想多赚点&#xff1f;跟我来&#xff0c;一起探索AI副业&#xff0c;实现财务自由&#xff01;记得关注我哦&…

Java、python、php版的高校失物招领平台(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

数据结构(11)——二叉搜索树

欢迎来到博主的专栏&#xff1a;数据结构 博主ID:代码小豪 文章目录 二叉搜索树二叉搜索树的声明与定义二叉搜索树的查找二叉搜索树的插入二叉搜索树的中序遍历二叉搜索树的删除 key_value型搜索二叉树 二叉搜索树 二叉搜索树也称二叉排序树&#xff0c;是具备以下特征的二叉树…

sourceinsigt + samba

samba服务器 yum install -y sambsystemctl start smb systemctl enable smb 注意 setenforce 0 是一个用于管理 SELinux&#xff08;Security-Enhanced Linux&#xff09;模式的命令。SELinux 是 Linux 内核的一种安全模块&#xff0c;提供了强制访问控制&#xff08;MAC&am…

【密码学】密钥管理:②密钥分配

一、密钥分配的定义 密钥分配是密钥管理生命周期中最重要的部分&#xff0c;密钥分配方案研究的是密码系统中密钥的分发和传送问题。从本质上讲&#xff0c;密钥分配为通信双方建立用于信息加密、解密签名等操作的密钥&#xff0c;以实现保密通信或认证签名等。 &#xff08;1…