#coding:utf-8
import sys,urllib2,re,Queue
sys.path.append("..")

from lib.Http_Class import Http_Class
from BeautifulSoup import BeautifulSoup

####################################
#
# Spider 爬虫模块
#
####################################

class Spider_module:
def setW3AScan(self,w3ascan):
self.w3ascan=w3ascan
self.result_list={}
self.q_list=Queue.Queue()
self.tmp_list=Queue.Queue()

def start(self,aa):
url="http://lucifr.com/"
print "[*] 爬虫目标:"+url
self.result_list.update({url:0})
try:
while True:
# 判断爬虫是否有爬过
for url in self.result_list:
if self.result_list[url]==0:
self.q_list.put(url)
self.result_list[url]=1

# 判断任务队列是否为空,如果是则直接退出
# 否则处理任务
if self.q_list.empty():
print "[*] 结束爬虫任务."
break
else:
for tmp in range(self.q_list.qsize()):
spider_url=self.q_list.get()
obj=Http_Class()
try:
html=obj._do("get",spider_url)
except:
self.w3ascan.log_create("url: %s Field! " % spider_url,"Spider_module")
print "url: %s Field! " % spider_url
continue
soup=BeautifulSoup(html)
links=soup.findAll('a')
for link in links:
_url=link.get('href').encode('utf-8')
if re.match('^(javascript|:;|#|mailto)',_url) or _url is None or re.match('.(jpg|png|bmp|mp3|wma|wmv|gz|zip|rar|iso|pdf|txt|db)$',_url):
continue
if re.match('^(http|https)',_url):
if not re.match('^'+url,_url):
continue
else:
if self.result_list.has_key(url):
continue
else:
rst=_url.encode('utf-8')
print "[*][!] 发现新连接: "+rst
self.result_list.update({rst:0})
else:
if self.result_list.has_key(url+_url):
continue
else:
rst=url+_url
print "[*][!] 发现新连接: "+rst.encode('utf-8')
self.result_list.update({rst.encode('utf-8'):0})

except Exception,error:
print "[*] 发生异常情况,捕获并写入日志。"
self.w3ascan.log_create("Url: %s get Url Error! Source: %s" % (url,error),"Spider_module")

def save(self):
print "[*]保存爬虫结果"

def getPluginClass():
return Spider_module

if __name__=="__main__":
t=Spider_module()
t.start("aaa")

Python 爬虫插件的更多相关文章

  1. Python 爬虫6——Scrapy的安装和使用

    前面我们简述了使用Python自带的urllib和urllib2库完成的一下爬取网页数据的操作,但其实能完成的功能都很简单,假如要进行复制的数据匹配和高效的操作,可以引入第三方的框架,例如Scrapy ...

  2. python爬虫抓网页的总结

    python爬虫抓网页的总结 更多 python 爬虫   学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自 ...

  3. 使用notepad++学习python爬虫,print网页中文乱码问题

    今天学习使用python爬虫的时候发现爬到的网页中文会乱码,一直网上搜索解决办法,一个一个试验过去,发现还是乱码,然后我就开始使用其它方法测试,用python自带的编辑器打开是正常的,发现是notep ...

  4. Python爬虫小白---(二)爬虫基础--Selenium PhantomJS

    一.前言   前段时间尝试爬取了网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息.网易云音乐歌曲列表是通过iframe展示的,可以借助Selenium获取到iframe的页面元素, 而QQ音乐采用的是 ...

  5. Python爬虫:用BeautifulSoup进行NBA数据爬取

    爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...

  6. Python 爬虫——抖音App视频抓包

    APP抓包 前面我们了解了一些关于 Python 爬虫的知识,不过都是基于 PC 端浏览器网页中的内容进行爬取.现在手机 App 用的越来越多,而且很多也没有网页端,比如抖音就没有网页版,那么上面的视 ...

  7. Python爬虫实战一之爬取QQ音乐

    一.前言   前段时间尝试爬取了网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息.网易云音乐歌曲列表是通过iframe展示的,可以借助Selenium获取到iframe的页面元素, 而QQ音乐采用的是 ...

  8. Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  9. python爬虫工具集合

    python爬虫工具集合 大家一起来整理吧!强烈建议PR.这是初稿,总是有很多问题,而且考虑不全面,希望大家支持! 源文件 主要针对python3 常用库 urllib Urllib是python提供 ...

随机推荐

  1. zabbix服务器性能监控工具的安装一

    Linux下安装zabbix需要有LNMP运行环境,本篇记录安装LNMP的过程 目录 1.准备工作 2.安装mysql 3.安装nginx 4.安装php 1.准备工作 1.1准备一台centos6. ...

  2. 【ZT】Enhancement Framework – Introduction

    Enhancement Framework – Introduction By Naimesh Patel | March 26, 2014 | Enhancement Implementation ...

  3. P1596 【[USACO10OCT]湖计数Lake Counting】

    可爱的题面君~~ 个人感觉这题还是很简单的,就是一个完全不加工的找联通块个数 个人解题思路是先读入,然后循环一遍,遇到水就dfs,并把这个w所在的联通块“删除”,并在答案上加一 最后输出答案 具体注释 ...

  4. HtML5与CSS3基础

    HTML标签 1.<a></a> 超链接标签 属性 href:跳转页面的连接 name:实现定锚功能,跳转同一页面不同位置(例返回顶部) target: (self, pare ...

  5. ROS系统的安装以及卸载

    ROS系统的安装 ROS系统的安装方式有两种,通过软件源和源码编译安装.软件源安装只需要通过简单的命令,因此,我们使用软件源来安装ROS 配置系统软件源 打开Ubuntu软件中心的软件源配置界面,勾选 ...

  6. 【VS开发】【图像处理】RGB各种格式

    RGB格式 RGB组合格式 名字 RGB组合格式 描述 此格式用来匹配PC图形帧缓存.每个像素占据8,16,24或32个位,他们都是组合像素格式,其意为在内存中所有像素数据都是相邻排列的.当使用这些格 ...

  7. HTML5 plus 报错 Uncaught SyntaxError: Unexpected identifier at XXXX.html:1

    最近使用 VUE2.X + muse-ui  + HTML5 plus 开发webApp 调用HTML5 plus报错,错误提示如下 Uncaught SyntaxError: Unexpected ...

  8. python 并发编程 多线程 GIL与Lock

    GIL与Lock Python已经有一个GIL来保证同一时间只能有一个线程来执行了,为什么这里还需要互斥锁lock? 锁的目的是为了保护共享的数据,同一时间只能有一个线程来修改共享的数据 GIT保证了 ...

  9. CentOS7 linux系统多种方式安装ClickHouse数据库

    clickhouse是由俄罗斯Yandex公司开发的列式存储数据库,于2016年开源,clickhouse的定位是快速的数据分析,对于处理海量数据的情况性能非常好,在网上也有很多测试的案例,在大数据的 ...

  10. CentOS8Linux中配置网易云网络yum源安装软件

    在CentOS8Linux中配置网易云网络yum源安装软件 前提是你的操作系统是CentOS-Linux 你已经配置好了本地yum源,并且你的网络是可用的. 本地yum源配置请参考:https://w ...