• 大小: 566KB
    文件类型: .rar
    金币: 2
    下载: 2 次
    发布日期: 2021-06-09
  • 语言: Python
  • 标签: python3  网络爬虫  

资源简介

花了几天写的,是我需要写一个扫描器,爬网址是其中一个功能,就分享出来了,半天爬10万个网址,全自动无限爬。里面有一个sql文件,直接导入数据库就行了。

资源截图

代码片段和文件信息

#-*- coding: UTF-8 -*-
import re
from urllib import request
from urllib import parse
import pymysql
import threading

#创建数据库连接  买源码到96KaiFa,网址:www.96kaifa.com    下面是数据库,自己配置下吧!
conn=pymysql.connect(host=‘localhost‘port=3306user=‘root‘passwd=‘root‘db=‘scan‘)
#创建数据库游标
cursor=conn.cursor()
#执行sql,并返回收影响行数
effect_row=cursor.execute(“select * from url where status=0 order by id desc“)

def kaishi():
#======获取网页源代码方法 start======#
def getHtml(url):
try:
page = request.urlopen(url timeout=3)
html = page.read()
return html
except:
print(“异常“)
code_error = ““


counts=0
for url in cursor.fetchall():
effect_row = cursor.execute(“select * from url“)
print(effect_row)
url = url[1]
try:
effect_row = cursor.execute(“select * from url where url=‘%s‘ and status=1“%(url))
print(str(counts) + “:“ + str(url))
except:
continue
if effect_row==1:
code_error = “yichang“
print(“已爬过“)
else:
print(“开始爬“)
cursor.execute(“update url set status=1 where url=‘%s‘“%(url))
try:
#print(“开始:“+url)
html = getHtml(url)
#print(“结束:“ + url)
except:
code_error=“yichang“
print(“异常“)
counts+=1
#print(html)
#======获取网页源代码方法 start======#
if code_error==“yichang“:
print(“跳过“)
continue
else:
#获取中的URL
#print(“开始提取网址“)
res_url = r“(?<=href=\“).+?(?=\“)|(?<=href=\‘).+?(?=\‘)“
link = re.findall(res_urlstr(html)re.I|re.S|re.M)
for urls in link:
f = parse.urlparse(urls)
if (f.scheme==‘‘ or f.netloc==‘‘): #http为空 或者 host 为空时,跳过
continue
n_url = f.scheme + “://“ + f.netloc
effect_row = cursor.execute(“select * from url where url=‘%s‘“%(n_url))
if effect_row==1:
#print(“已存在“)
continue
else:
n_url = f.scheme + “://“ + f.netloc
print(“把 “+n_url+“ 写入数据库“)
cursor.execute(“insert into url (urlstatussvn_status) values(‘%s‘00)“%(n_url))

t1=threading.Thread(target=kaishi)
t1.start()
t2=threading.Thread(target=kaishi)
t2.start()
t3=threading.Thread(target=kaishi)
t3.start()
t4=threading.Thread(target=kaishi)
t4.start()
t5=threading.Thread(target=kaishi)
t5.start()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .CA....      2433  2018-02-10 17:16  reptile.py

    .CA....   3520820  2018-02-10 17:17  scan.sql

----------- ---------  ---------- -----  ----

              3523253                    2


评论

共有 条评论