大部分单位网络安全的典型特征是,各项业务开展以及IT发展,必须遵守各项管理法律法规要求,也就是常说的“合规”。合规是网络安全的底线和最低要求,其目标是避免违反法律法规、规章制度明确规定的风险。
要做好合规,先要搜集相关的政策法规,我在网上发现,已经有人造了一个网络安全政策汇编的轮子,网址如下:
鲜鲜实验室-网络安全政策法规汇编
虽然不用自己逐个整理,已经省了很多事,但是如此多的文件,需要逐个点击下载,还是令我感到非常枯燥。
![](https://img.haomeiwen.com/i15208256/6751f396f526fd2d.png)
接着,我便想到了爬虫,于是我把下载文件的目标分成了几个步骤:
-
明确目的。目的是用爬虫提取出下载链接即可,这个需求非常简单,只涉及一个网页,不需要使用任何框架,直接抓取即可。
-
找到下载链接所在的网页,也就是上面的网页链接。
http://www.xianxianlabs.com/2020/01/26/china_cyber_security_law/
-
分析网页的结构找到数据所在的标签位置。
网页就是浏览器对HTML文件的解析,网页上的数据存储在一个个HTML标签中的。要查找对应的标签,方法很简单,以谷歌浏览器为例,在浏览器中找到关注的文件链接,直接点击右键选择“检查”,就可以定位到所需要标签位置。
找到对应的标签
- 模拟http请求,向服务器发送请求,获取到服务器返回的html源代码
- 用正则表达式提取我们要的数据,最终得到所有文件的链接地址,具体需要处理的链接如下:
#<a href="http://www.xianxianlabs.com:80/wp-content/uploads/2020/01/中华人民共和国电子签名法.docx">中华人民共和国电子签名法</a>
在明确所有步骤后,接下来的代码就简单了,下面直接贴出来供参考。
import re # 正则表达式
from urllib import request # request对象获取网页
class Spider():
# 获取网页html内容
url = 'http://www.xianxianlabs.com/2020/01/26/china_cyber_security_law/' # 对应的网页
m_pattern = '<a href="[\s\S]*?</a>' # 匹配需要的字符 ,[\s\S]*:默认字符,?非贪婪模式
def __fetch_content(self): ## 双下划线私有方法的意思
r = request.urlopen(Spider.url)
htmls = r.read() # 获取到tytes
htmls = str(htmls, encoding='utf-8') # 转换成string
return htmls
def __analysis(self, htmls): ## 分析网页内容
m_html = re.findall(Spider.m_pattern, htmls)
for link in m_html:
if '.doc' in link:
m_link = link.split('"')[1]
print(m_link)
def go(self):
htmls = self.__fetch_content()
self.__analysis(htmls)
if __name__ == '__main__':
spider = Spider()
spider.go()
试着运行一下,文件链接全部提取到。
![](https://img.haomeiwen.com/i15208256/633d090a8b70e354.png)
网友评论