spider

闲来没事,就想着去爬取一下wooyun站的漏洞详情页面的内容

原本尝试直接爬wooyun本站的信息的,结果在分析页面的时候出了点小问题,只能说一时脑子不开窍了

然后就去找了一个其他的,其实还是乌云的站

代码方面这里着重说一下使用的BeautifulSoup

先分析网页源代码,我需要找到的是漏洞的url和标题在页面中的位置,

url存在于 td 标签下面的a标签里面,接下来就下去获取这个标签,然后再取出标签内我们需要的内容

BeautifulSoup

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

安装此库 pip install BeautifulSoup4

首先应该导入BeautifulSoup类库 from bs4 import BeautifulSoup

我们需要取出标签及内容

find_all

1
2
3
4
5
1. 查找指定标签 soup.find_all('tag') 
2. 查找指定文本 soup.find_all(text='text')
3. 根据id查找 soup.find_all(id='tag id')
4. 使用正则进行匹配 soup.find_all(text=re.compile('your re')), soup.find_all(id=re.compile('your re'))
5. 指定属性查找标签 soup.find_all('tag', {'id': 'tag id', 'class': 'tag class'})

a = soup.find_all('a',href=re.compile("/bugs/wooyun?")) #定向匹配 ?

这就可以取出整个a标签,是不是比正则简单了很多呢

取a标签里面href的值使用a[0]['href']即可

1
2
3
4
5
for num in range(0,len(a)):
b = a[num]['href']
u_href = "http://zone.secevery.com:4321" + b
#拼接第一种:用 + ;第二种:空格:只要把两个字符串(仅限字符串)放在一起,中间有空白或者没有空格,两个字符串自动拼接为一个字符串;第三种:逗号 str="HI" str,'tom' ,output: Hi tom,使用逗号会自动加上一个空格
url_list.append(u_href)

下载整个网页内容

对应标题 url

将标题名字作为存储的文件名

python爬取原生网页

或者直接将页面保存为PDF

使用import urllib.request报错,改为 import urllib

urllib.request.urlopen(url);