前言
本篇博文是 《Selenium IDE 自动化实战案例》 系列的第四篇博文,主要内容是使用 requests 库来获取情报星球社区中的每日情报及安全资讯,并通过 XPATH 语法筛选出自己需要的内容,最后设置机器人定时推送,往期系列文章请访问博主的 自动化实战案例 专栏,博文中的所有代码全部收集在博主的 GitHub 仓库 中;
严正声明:本博文所讨论的技术仅用于研究学习,任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。
展示


实现
根据自己的需要获取页面内容,这里我们以获取漏洞情报、情报精选和安全资讯为例。

通过观察页面元素,发现我们需要获取的内容刚好在这三个 table 里面,因此,我们先通过 XPATH 语法获取到这些
标签,代码如下所示:
detail_resp = requests.get(detail_url)
detail_html = etree.HTML(detail_resp.text)
tables = detail_html.xpath('//*[@id="detail-box-view"]/div/div/table')
漏洞情报获取
先通过 F12 查看我们需要获取内容的页面元素:

根据 DOM 元素编写相应的 XPATH 语法并进行验证:

由于标题里用的是
元素,而内容里用的是
元素,因此可以使用符号 * 来匹配任何元素节点。

同时出现了 标签,但是其 text 内容包含了 URL,因此可以不用去获取其 href 属性,代码如下所示:
table0 = tables[0]
trs0 = table0.xpath('tbody/tr')
for tr in trs0:
print("[1]", tr.xpath('*/text() | */a/@href'))
print("[2]", tr.xpath('.//text()'))
在上述代码中,[1] 是从 href 属性中获取的 URL,而 [2] 则是通过文本匹配进行获取,运行结果如下所示:

情报精选获取
先分析一下这一模块的页面元素:

发现与漏洞情报的页面元素类似,因此直接构造代码如下所示:
table1 = tables[1]
trs1 = table1.xpath('tbody/tr')
for tr in trs1:
if first:
first = False
continue
lst = tr.xpath('.//text()')
print(lst)
运行结果:

安全资讯获取
虽然这个 table 与之前的看着有点不太一样,但是也可以通过 .//text() 去匹配其中的内容:

代码如下所示:
table2 = tables[2]
trs2 = table2.xpath('tbody/tr')
for tr in trs2:
lst = tr.xpath('.//text()')
print(lst)
运行结果:

后记
通过使用 requests 库,我们成功地获取到了情报星球社区中的每日情报及安全资讯详情页,再继续分析其中的页面元素并且使用 XPATH 语法筛选出自己需要的内容,最后设置机器人定时推送相关内容。
文中每日情报及安全资讯内容来自于 情报星球 社区。
以上就是 时刻关注网络安全,机器人推送每日情报及安全资讯 的所有内容了,希望本篇博文对大家有所帮助!
严正声明:本博文所讨论的技术仅用于研究学习,任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。
📝 上篇精讲:(三)筛选活动中点赞数量 TOP5 的作品
💖 我是 𝓼𝓲𝓭𝓲𝓸𝓽,期待你的关注,创作不易,请多多支持;
👍 公众号:sidiot的技术驿站;
🔥 系列专栏:Selenium IDE 自动化实战案例
相关推荐
多线程入门 01、理论基础 进程 简单来说,在系统中运行的一个应用程序就是一个进程,比如启动一个java程序,系统就会创建一个对应的进程。 每一个进程都拥有自己独立的内存空间和系统资源。 线程 线程(Light Weight Process)也称为轻量级线程,线程是大多数操作系统进行时间片分配调度的基本单元,是调度的最小单位。每一个进程下都至少有1个或多个线程,每个线程拥有独立的程序计数器、堆栈、
PHP是一种流行的服务器端脚本语言,广泛应用于Web开发。其中,foreach循环是PHP中常用的循环语句之一,用于遍历数组中的每个元素。然而,使用foreach循环时有时会遇到一些问题,本文将深入探讨foreach循环常见问题及其解决方案,并结合具体的代码示例进行说明。 问题一:在foreach循环中改变数组元素的值会失败 有时候在foreach循环中想要改变数组元素的值,但操作却不生效。这是因
Flink入门系列文章主要是为了给想学习Flink的你建立一个大体上的框架,助力快速上手Flink。学习Flink最有效的方式是先入门了解框架和概念,然后边写代码边实践,然后再把官网看一遍。 Flink入门分为四篇,第一篇是《了解Flink》,第二篇《架构和原理》,第三篇是《DataStream》,第四篇是《Table Api & SQL》。 官网地址nightlies.apache.or
在软件开发和版本控制中,GitLab 是一个广受欢迎的工具,具有很多出色的特性。作为开源软件,GitLab 经过不断改进和更新,以保持竞争力,因此用户需要及时下载更新,以确保其工作流程得以顺利展开。在本文中,我们将介绍如何下载 GitLab 的更新记录。 GitLab的更新记录包括特性、修复和重要通知等。通过下载更新日志,我们可以快速了解与之前版本的差异,更好地理解更新的内容,以及在合适的时间升级
golang 分布式系统中异常处理采用 errgroup 包,它提供了并发的错误组。实操案例中,通过 errgroup.withcontext 创建带有上下文的 errgroup,并使用 g.go 并发执行多个模拟任务的 goroutine。如果任何 goroutine 遇到错误,errgroup 将返回该错误,在 main 函数中捕获并记录。通过使用 errgroup 包,系统在遇到错误时不会崩
回到顶部
| |