python 爬取乌云所有厂商名字,url,漏洞总数 并存入数据库

需要:MySQLdb 
下面是数据表结构:

 
/*
Navicat MySQL Data Transfer
 
Source Server         : 127.0.0.1
Source Server Version : 50509
Source Host           : 127.0.0.1:3306
Source Database       : wooyun
 
Target Server Type    : MYSQL
Target Server Version : 50509
File Encoding         : 65001
 
Date: 2015-09-24 17:38:14
*/
 
SET FOREIGN_KEY_CHECKS=0;
 
-- ----------------------------
-- Table structure for wooyun_vul
-- ----------------------------
DROP TABLE IF EXISTS `wooyun_vul`;
CREATE TABLE `wooyun_vul` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `corpsname` varchar(255) DEFAULT NULL,
  `corpsurl` varchar(255) DEFAULT NULL,
  `vulcount` int(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

python 脚本:

#conding=utf-8
import urllib2
import urllib
import re
import MySQLdb
 
url = "http://wooyun.org/corps/page/"
def getWooyuncorps(url):
    request = urllib2.Request(url)
    request.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36')
    reponse = urllib2.urlopen(request)
    content = reponse.read()
    pattern1 = re.compile(r'<td width="370"><a href="\/corps\/(.*?)">.*?<\/a><\/td>')
    pattern2 = re.compile(r'<a rel="nofollow" href="(.*?)" target=')
    corps = pattern1.findall(content)
    corpsUrl = pattern2.findall(content)
    return corps,corpsUrl
 
def getcorpscount(url):
    request = urllib2.Request(url)
    request.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36')
    reponse = urllib2.urlopen(request)
    content = reponse.read()
    pattern = re.compile(r'<p class="page">.*?(\d+).*')
    count = pattern.findall(content)
    return count
 
corpslist = []
corpsurllist = []
countlist = []
for i in range(1,37):
    corps,corpsUrl = getWooyuncorps(url+str(i))
    for corp in corps:
        corpslist.append(corp)
    for urls in corpsUrl:
        corpsurllist.append(urls)
print len(corpslist),len(corpsurllist)
 
for i in range(0,len(corpslist)):
    newurl = "http://www.wooyun.org/corps/"+urllib.quote(corpslist[i])
    #print newurl
    count = getcorpscount(newurl)
    #print count
    for countA in count:
        countlist.append(countA)
 
#print len(countlist)
conn = MySQLdb.connect('localhost','root','','wooyun')
cur = conn.cursor()
sql = "set names 'utf8'"
cur.execute(sql)
conn.commit()
 
for s in range(0,len(countlist)):
    sql = 'insert into wooyun_vul(corpsname,corpsurl,vulcount) values("%s","%s",%d)' %(corpslist[s],corpsurllist[s],int(countlist[s]))
    print sql
    cur.execute(sql)
    conn.commit()
 
conn.close()
print "success"

  

posted @ 2016-02-15 10:39  depycode  阅读(437)  评论(0编辑  收藏  举报