【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据

news2024/11/24 22:31:58

目录

一、目标1、基础/环境的准备工作

二、目标2:开始使用pyquery

三、目标3:提取到指定的数据

四、目标3:通过列表的形式获取指定数据

五、扩展:其他方法

六、网络安全O


一、目标1、基础/环境的准备工作

1、文档:

PyQuery解析库的使用,我们可以对比jQuery来使用

jQuery API 中文文档https://www.94xh.com/

2、环境:

安装pyquery(或者直接在pycharm上安装)

pip install pyquery

3、定位

<li>
    <div class="A">
        <div id="B">

定位li--->'li'

定位<div class="A">--->'li .A'

定位<div id="B">--->'li .A #B'

(与顺序无关,与标签有关)


 



二、目标2:开始使用pyquery

1、打印head数据

from pyquery import PyQuery as pq

doc = pq(url='http://www.baidu.com')
print(doc('head'))

head数据被打印出来了,其实可以看见汉字是出现了乱码的

2、编码:

解决乱码问题(就是使用utf-8编码,来解决中文乱码)

import requests
from pyquery import PyQuery as pq

response = requests.get('http://www.baidu.com')
content = response.content.decode('utf-8')
doc = pq(content)
print(doc('head'))

没有了乱码问题

 

3、提取对应属性

会提取所有满足条件的div标签

 

.official-newsbd爬取所有<div class="official-newsbd">

 

import requests
from pyquery import PyQuery as pq

response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
print(doc('.official-newsbd'))

 



三、目标3:提取到指定的数据

1、目标:

提取所有列表图片的相关信息

2、全提取: 

提取所有的<div class="thumb">

import requests
from pyquery import PyQuery as pq

response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.thumb')

print(item)

运行结果

 

3、逻辑提取:

这个是一步一步往下走提取内容

import requests
from pyquery import PyQuery as pq

response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.official-newsbd')
item = items.find('.thumb')

print(item)

运行结果

4、列表数据提取

children()是一个函数或方法,用于获取一个元素的所有子元素

item = items.children()



四、目标3:通过列表的形式获取指定数据

假设我们要提取到链接URL

1、找到最小子标签

首先我们先到最小子标签

(可以不用逻辑一步一步往下走,也可以直接找到它)

import requests
from pyquery import PyQuery as pq

response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.official-newsbd')
item = items.find('.thumb')
i = item('a')

print(i)

 

2、for循环-提取标签内URL

关键代码

(其实 实现的方法各种各样)

.attr('href')

.attr.href

完整代码

import requests
from pyquery import PyQuery as pq

response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.official-newsbd')
item = items.find('.thumb')
for i in item:
    b = pq(i)('a')
    print(b.attr('href'))

改进前:

items = doc('.official-newsbd')
item = items.find('.thumb')

 改进后:

item = doc('.official-newsbd .thumb')

3、获取文本

关键代码

b.text()

(我这个目标标签没有文本去提取)



五、扩展:其他方法

1、兄弟类


siblings() 方法返回一个 PyQuery 对象,包含了当前元素的所有同级元素。这些同级元素是当前元素的直接兄弟节点(相同父节点下的其他子节点),不包括当前元素本身

from pyquery import PyQuery as pq

html = '''
<div>
  <p class="first">First paragraph</p>
  <p class="second">Second paragraph</p>
  <p class="third">Third paragraph</p>
</div>
'''

doc = pq(html)
elem = doc('.second')

siblings = elem.siblings()
print(siblings)

2、父类

parent() 方法返回一个 PyQuery 对象,包含了当前元素的直接父级元素。父级元素是指当前元素的上一级节点,即当前元素的父节点
 

from pyquery import PyQuery as pq

html = '''
<div class="parent">
  <p>Child paragraph</p>
</div>
'''

doc = pq(html)
child = doc('p')

parent = child.parent()
print(parent)


六、网络安全O

README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge

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

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

相关文章

wordpress的wp_trim_words摘要没有截取到指定的字符长度的问题解决

一、问题描述 在imqd.cn文章列表中&#xff0c;用于将正文内容截取保留前75个字的方法突然没效果了。 <p class"post-desc text-black-50 d-none d-md-block"><?phpecho wp_trim_words( get_the_content(), 75, ...);?> </p>直接展示了所有的正…

计算机网络实验(1)--Windows网络测试工具

&#x1f4cd;实验目的 理解知识点&#xff08;ping&#xff0c;netstat&#xff0c;ipconfig&#xff0c;arp&#xff0c;tracert&#xff0c;route&#xff0c;nbtstat&#xff0c;net&#xff09;所涉及的基本概念&#xff0c;并学会使用这些工具测试网络的状态及从网上获取…

java后端开发环境搭建 mac

在mac pro上搭建一套java 后端开发环境&#xff0c;主要安装的内容有&#xff1a;jdk、maven、git、tomcat、mysql、navicat、IntelliJ、redis。 本人mac pro的系统为mac OS Monterey 12.6.7&#xff0c;主机的硬件架构为x86_64。 左上角关于本机查看系统版本&#xff1b;终端…

LLM - Baichuan7B Lora 训练详解

目录 一.引言 二.环境准备 三.模型训练 1.依赖引入与 tokenizer 加载 2.加载 DataSet 与 Model 3.Model 参数配置 4.获取 peft Model 5.构造 Trainer 训练 6.训练完整代码 四.Shell 执行 1.脚本构建 2.训练流程 3.训练结果 五.总结 一.引言 LLM - Baichuan7B Tok…

Ubuntu18.04 docker kafka 本地测试环境搭建

文章目录 一、kafka 介绍二、Ubuntu docker kafka 本地测试环境搭建2.1 docker kafka 启动2.1.1 下载镜像2.1.2 启动 wurstmeister/zookeeper2.1.3 启动 wurstmeister/kafka 2.2 docker kafka 测试数据收发2.2.1 docker kafka 测试数据收发2.2.2 windows验证 三、嵌入式集成四、…

加密劫持者攻击教育机构

我们的专家分析了2023年第一季度的当前网络威胁。研究表明&#xff0c;独特事件的数量增加&#xff0c;勒索软件活动激增&#xff0c;特别是针对学术和教育机构。我们记录了大量与就业有关的网络钓鱼邮件&#xff0c;出现了QR网络钓鱼和恶意广告的增加。 我们的研究表明&#…

「2023 最新版」Java 工程师面试题总结 (1000 道题含答案解析)

作为一名优秀的程序员&#xff0c;技术面试都是不可避免的一个环节&#xff0c;一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试&#xff0c;肯定会遇到一些这样的问题&#xff1a; 1、看你项目都用的框架&#xff0c;熟悉…

AIGC:文生图stable-diffusion-webui部署及使用

1 stable-diffusion-webui介绍 Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用&#xff0c;利用 gradio 模块搭建出交互程序&#xff0c;可以在低代码 GUI 中立即访问 Stable Diffusion Stable Diffusion 是一个画像生成 AI&#xff0c;能够模拟和重建几乎…

Linux(centos7)下安装mariadb10详解

MariaDB 和 MySQL 之间存在紧密的关系。 起源&#xff1a;MariaDB 最初是作为 MySQL 的一个分支而创建的。它的初始目标是保持与 MySQL 的兼容性&#xff0c;并提供额外的功能和性能改进。 共同的代码基础&#xff1a;MariaDB 使用了 MySQL 的代码基础&#xff0c;并在此基础上…

PYTHON 解码 IP 层

PYTHON 解码 IP 层 引言1.编写流量嗅探器1.1 Windows 和 Linux 上的包嗅探2.解码 IP 层2.1 struct 库3.编写 IP 解码器4.解码 ICMP5.总结 作者&#xff1a;高玉涵 时间&#xff1a;2023.7.12 环境&#xff1a;Windows 10 专业版 22H2&#xff0c;Python 3.10.4 引言 IP 是 …

JWT的深入理解

1、JWT是什么 JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在不同实体之间安全地传输信息。它由三部分组成&#xff0c;即头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xff09;和签名&…

获取QT界面坐标的各种方法

链接 ract() 获取rect所在部件的尺寸。 rect()返回的QRect对象可以用来做什么

openResty的Redis模块踩坑记录

OpenResty提供了操作Redis的模块&#xff0c;我们只要引入该模块就能直接使用。说是这样说&#xff0c;但是实践起来好像并不太顺利。 1.设置了密码的redis&#xff0c;lua业务逻辑中需要添加身份认证代码 网上很多资料、文章似乎都是没有设置redis密码&#xff0c;说来也奇怪…

JS区域滤镜

思路 简单一点的&#xff0c;像素点X坐标小于图宽1/3和大于2/3的点变灰&#xff0c;中间的点不变。 复杂的暂时不会搞。 原图 处理后 <html> <style> #canvas { width:100%; } </style> <body> <input id"file" type"file" …

python中的生成器(generator)

一、生成器 生成器是 Python 中非常有用的一种数据类型&#xff0c;它可以让你在 Python 中更加高效地处理大量数据。生成器可以让你一次生成一个值&#xff0c;而不是一次生成一个序列&#xff0c;这样可以节省内存并提高性能 二、实现generator的两种方式 python中的gener…

SAP从放弃到入门系列之WIP Batch(Work-in-Process ) -Part1

目录 一、 概述二、 系统配置三、 数据设置最后 ERP系统的复杂性并不单是架构设计和技术造成的&#xff0c;而是它所要支撑的业务场景&#xff0c;涉及行业越广泛越复杂软件功能越复杂&#xff0c;复杂的背后是业务实践沉淀和优化的流程。平时看着部分系统功能很复杂&#xff0…

47.判断类关键字 if else switch case default

目录 1 if 2 else 3 判断的嵌套 4 switch,case,default 4.1 基本使用 4.2 需要注意的点 1 if if后面的括号加表达式的内容&#xff0c;大括号中加入 条件为true 时要运行的代码 经测试如果我们将a的值设置为0&#xff0c;则不会弹出警告框 2 else 和if配合使用…

ubuntu netplan工具原理(网络配置、ip修改ip、固定ip)(NetworkManager)

https://netplan.io/ 文章目录 netplan工作原理netplan -h原翻译命令释义- help&#xff1a;显示netplan的帮助消息。- apply&#xff1a;将当前netplan配置应用到运行系统。示例命令&#xff1a;netplan apply --debug- generate&#xff1a;从/etc/netplan/*.yaml生成特定于后…

iOS开发 - NotificationService语音播报

iOS NotificationService语音播报 最近碰到个接收到推送要实现语音播报的需求&#xff0c;需要后台推送通知&#xff0c;APP客户端收到通知之后语音播放&#xff1a;“您的账户收到一笔巨款”的功能。 因为工程之前已经集成了极光推送服务。这里直接使用Notification Service…

【科研绘图】MacOS系统OmniGraffle实用指南

用过不少绘图软件&#xff0c;包括Visio (only for Windows)、ProcessOn、draw.io等主流软件&#xff0c;然后换Mac后尝试了实验室在用的OmniGraffle&#xff0c;才第一次感受到了绘图软件的人性化和强大&#xff01; 实用操作总结 按住Shift后调整元素位置或调整线段&#x…