【Python】URL深度采集+源码分析
来源:互联网 发布:淘宝精品服饰广告案例 编辑:程序博客网 时间:2024/06/02 03:53
现在市面上URL采集工具大把大把的,重复造轮子也没有啥意思
但是还会执着写了这个工具,一是用自己的安全无后门担忧,二是写工具的能提高自身水平,三主要是市面上url采集工具不够强,抓取力度不够...
我的URL采集工作假设工程:
1.子域名
2.友情链接
3.同IP站点
A 首先百度采集URL
B 查询旁站
C 对旁站以及主站爬行友情链接
## C段查询
D 对爬行到的友情链接继续在查询旁站
E 最后的结果逐个查询子域名 这是我写的构架思路,最后完成后发现用一个初始url做测试爬行出来了五千多个url.....于是砍了又砍
最终的成果是 :
先爬行旁站---------->在爬行旁站和主站的友情链接---------->在爬行友情链接的旁站---------->去重复
但是这样还是挺大的 用一个url做测试,爬行出来了3000多个网站.........可能是这个url比较大或者比较屌吧......一般小站应该没这么多
而且还只是一个url啊,就算用我自己博客之前写的url采集工具采集一次也能采集到几百个url,几百个url放进去进行深度采集去重复后还能剩下几万个url
查询旁站的时候我在站长工具&webscan&等等一系列的平台测试后,最终还是采用了webscan
源码如下
#coding=utf-8import reimport requestsimport osimport timeprint unicode('''作者:浪子燕青作者QQ:982722261''','utf-8')headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102Safari/537.36'}#查询原始URL的旁站,保存在urlx1.txt当中def tongip(): f1 = open('urlx.txt','r') #我上个url采集到的url地址 f2 = f1.readlines() f3 = open('urlx1.txt','w') for uuu in f2: urla = uuu.strip('\n') urlip = 'http://www.webscan.cc/?action=getip&domain=' + urla #构造url,提交上去就能得到IP try: r = requests.get(url=urlip,headers=headers,timeout=10) zhaohan1 = re.findall('{"ip":"(.*?)",',r.content) #正则匹配出ip print zhaohan1 urlip2 = 'http://www.webscan.cc/?action=query&ip=' + ''.join(zhaohan1) print urlip2 r1 = requests.get(url=urlip2) zhaohan2 = re.findall('domain":"(.*?)",',r1.content) #正则匹配到二次发送数据的url for zhaohan3 in zhaohan2: print zhaohan3 zhaohan4 = zhaohan3.replace('\\','') f3.write(zhaohan4 + '\n') except: print 'no found' pass f3.close()tongip()#对旁站和主站的友情链接探测,结果保存在urlx2.txt当中 def yqlj(): f1 = open('urlx1.txt','r') f2 = f1.readlines() f3 = open('urlx2.txt','w') for uuu in f2: urla = uuu.strip('\n') try: r = requests.get(url=urla,headers=headers,timeout=10) #用的爬行页面,自主正则匹配友情链接 yq = re.findall('<option value="(.*?)/">',r.content) #对不少url做测试,寻找一些差异 都写进去防止爬行不全面 yq1 = re.findall('<option value="(.*?).cn">',r.content) yq2 = re.findall('<option value="(.*?).com">',r.content) yq3 = re.findall('<option value="(.*?).net">',r.content) for zhaohan in yq: print zhaohan f3.write(zhaohan + '\n') for zhaohan1 in yq1: print zhaohan1 f3.write(zhaohan1 + '.cn' + '\n') for zhaohan2 in yq2: print zhaohan2 f3.write(zhaohan2 + '.com' + '\n') for zhaohan3 in yq3: print zhaohan3 f3.write(zhaohan3 + '.net' + '\n') except: print 'no found' pass f1.close() f3.close()yqlj()#对爬行到的友情链接继续在查询旁站和C段,结果保存在urlx3.txt当中def zcpz(): f1 = open('urlx2.txt','r') f2 = f1.readlines() f3 = open('urlx3.txt','a+') for uuu in f2: urla = uuu.strip('\n') try: urlip = 'http://www.webscan.cc/?action=getip&domain=' + urla r = requests.get(url=urlip,headers=headers,timeout=10) zhaohan1 = re.findall('{"ip":"(.*?)",',r.content) print zhaohan1 urlip2 = 'http://www.webscan.cc/?action=query&ip=' + ''.join(zhaohan1) print urlip2 r1 = requests.get(url=urlip2) zhaohan2 = re.findall('domain":"(.*?)",',r1.content) for zhaohan3 in zhaohan2: print zhaohan3 zhaohan4 = zhaohan3.replace('\\','') f3.write(zhaohan4 + '\n') except: print 'no found' pass f3.close()zcpz()os.remove('urlx1.txt')os.remove('urlx2.txt')f5 = open('result.txt','a+')for neti in set( x for x in open( 'urlx3.txt' ).read( ).replace( '\n' ,' ' ).split( ' ' ) if x ): #去除重复 f5.write(neti + '\n')f5.close()os.remove('urlx3.txt')print '===========================OVER======================================'time.sleep(10) #最后只保留result.txt 删除了urlx123.txt 也可以不删除,用来查看
用一个原始url做测试后的运行结果,爬行出来了2988个url,如果一次几百个我都不敢去试.....
- 【Python】URL深度采集+源码分析
- filebeat源码分析之采集
- 【Python】实现URL-sql注入检测+源码分析
- URL 源码分析
- python历史天气采集分析
- OBS源码分析--视频采集显示
- TSE源码分析-url.h
- Larbin源码分析:Url.cc
- LayoutInflater源码深度分析笔记
- 利用python采集分析糗事百科数据
- Python Unittest源码分析
- 【python】Dpark源码分析
- 【百度爬虫系列 III】深度搜索(给定网址采集全部url)
- tomcat的url-pattern的源码分析
- tomcat的url-pattern的源码分析
- tomcat的url-pattern的源码分析
- WebRTC-Android 源码导读(一):相机采集实现分析
- python从零写一个采集器:获取网页源码
- html中隐藏域hidden的作用
- 学习笔记---main函数参数-动态存储管理与动态数组
- 汇编语言(王爽) 一
- js学习笔记
- 【t030】数字构造
- 【Python】URL深度采集+源码分析
- Git使用操作
- 博为峰Java技术文章 ——JavaSE Swing JScrollPane滚动条容器I
- spring bean的获得方式
- 积极应对认真调查Note7燃损原因 彰显企业担当
- Linux 孤儿、僵尸、服务进程创建
- Linux-ubuntu 日记( 1 )- 传输文件+连接网络
- laravel5.2学习笔记一:配置
- 算法竞赛