前言
本篇博文是 《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 自动化实战案例
相关推荐
Java实现表单数据的PDF导入与解析功能 在现代化的信息化社会,数据的交流与共享是非常重要的一部分,而表单数据是我们日常生活和工作中最常见的形式之一。在处理表单数据时,有时需要将其导入到PDF文件中进行保存或者进行解析。本文将介绍如何使用Java编程语言实现表单数据的PDF导入与解析功能,并提供相应的代码示例。 一、PDF导入功能 导入依赖包 首先,我们需要在项目中导入相关的依赖包,以便使用PD
yii框架自发布以来一直备受开发者喜爱,但随着技术的不断发展,其未来又将如何演进?本文将由php小编鱼仔为您揭晓yii框架的未来视界,探索新版本和发展方向。随着技术的不断创新,yii框架也在不断更新迭代,为开发者提供更高效、更便捷的开发体验。让我们一起来看看yii框架在未来的发展中,将会给我们带来怎样的惊喜和改变吧! Yii 框架的新版本通常带来重大改进和新功能。以下是即将推出的版本及其一些关键功
java和javascript函数的区别在于:语法:java函数以public static void main(string[] args) { }声明,而javascript函数以function main() { }声明。类型:java是强类型语言,每个变量都有指定的数据类型,而javascript是弱类型语言,变量类型在运行时确定。参数传递:java通过值传递参数,而javascript通
解决Java网络连接超时异常(NetworkTimeoutException)的方法 网络连接超时异常(NetworkTimeoutException)是在Java编程中常见的问题之一。当我们尝试通过网络连接到其他服务器时,经常会出现这种异常。本文将介绍几种解决Java网络连接超时异常的方法,并提供相应的代码示例。 增加连接超时时间有时候,网络连接超时异常是由于连接超时时间设置得过短导致的。我们可
前言 在生活中太阳的东升西落,鸟类的南飞北归,四级的轮换,每天的上下班,海水的潮汐,每月的房租车贷等等,如果用程序员的视角看,这就是一个个的定时任务,在日常的开发工作中也有很多的定时任务场景: 数仓系统凌晨进行的数据同步 订单12小时未支付的状态校验 rpc调用超时时间的校验 缓存数据失效时间的延长 定时开启的促销活动 …… 假如现在有一个任务需要3s后执行,你会如何实现? 简单点,直接一个线程的
回到顶部
| |