前言
本篇博文是 《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 自动化实战案例
相关推荐
PHP Session 跨域的安全审计与漏洞挖掘 摘要:随着互联网的发展,越来越多的网站开始使用PHP Session来管理用户的登录状态和数据。然而,由于PHP Session的特性,使得它存在一些安全风险,尤其是在跨域访问的情况下。本文将介绍PHP Session跨域安全审计的重要性,并提供一些具体的漏洞挖掘代码示例。 一、引言PHP Session是一种在WEB开发中广泛使用的会话管理机制。
处理大规模 PHP 数组交集和并集的实用解决方案 简介 在处理大型数据时,经常需要执行数组交集和并集操作。但对于百万或数十亿个元素的大型数组,默认 PHP 函数可能效率低下或出现内存问题。本文将介绍几种实用解决方案,在处理大规模数组时以显著提高性能。 方法 1:使用 Hash 表 将一个数组转换为哈希表,使用元素作为键。 对另一个数组进行迭代,并检查该键是否存在于哈希表中。如果存在,则该元素在交集
PyQt6是基于Qt框架的Python GUI编程工具包,其中包含了许多常见的GUI控件,如列表框(List Box)和树形视图(Tree View)。在本文中,我们将详细介绍PyQt6中列表框和树形视图的使用方法、自定义方法、事件处理和常见问题,并提供完整的代码示例,帮助读者更好地掌握这些控件的使用。 列表框 列表框是一种常见的GUI控件,用于在窗口中显示一列项目。在PyQt6中,我们可以使用Q
Laravel是一款流行的PHP Web框架,由于其简单易用,广受欢迎。Laravel框架以其实现卓越的Eloquent ORM而著称,ORM是Object-Relational Mini映射,支持使用PHP定义数据库模型,并根据这些模型提供轻松的数据库交互方式。 本文将详细介绍如何使用Laravel Eloquent构建模型,以实现快速可靠地与数据库进行交互。 什么是 Laravel Eloqu
1 摘要 通过使用记录模式来增强Java编程语言,以解构记录值。记录模式和类型模式可嵌套使用,从而实现强大、声明式和可组合的数据导航和处理形式。 2 发展史 由 JEP 405 提出的预览功能,并在JDK 19发布,然后由 JEP 432 再次预览,并在JDK 20发布。该功能与用于switch的模式匹配(JEP 441)共同演进,并且二者有相当大的交互作用。本JEP提议在持续的经验和反馈基础上对
回到顶部
| |