python多级网址爬取_『Python』爬行搜索引擎结果获得指定主机所有二级域名

本文介绍了一个Python脚本,通过正则表达式和urllib2库,从搜索引擎结果中爬取并去重指定主机(tjut.edu.cn)的所有二级域名。作者分享了实现思路和代码,计划后续利用DNS查询获取更多信息。
摘要由CSDN通过智能技术生成

d1a32dd8e67e5c23a24451512fca0adb.png

0x 00 前言

前天自己在玩的时候,自己通过百度搜索主机的二级域名感觉好麻烦,自已要一页页的去翻

而且人工识别是否是重复的二级域名也够蛋疼的,正好最近在学正则表达式,权当练手了

0x 00 代码

# coding=utf-8

# author:Anka9080

import urllib

import urllib2

import cookielib

import re

url = ‘http://www.haosou.com/s?src=360sou_newhome&q=site:tjut.edu.cn&pn=1‘

req = urllib2.Request(url)

res = urllib2.urlopen(req)

html = res.read().decode(‘utf-8‘)

pageStr = re.search(ur‘找到相关结果约(.*?)个‘,html)

page = pageStr.group(1)

formatNum = ‘0123456789‘

for c in page:

if not c in formatNum:

page = page.replace(c,‘‘)

page = int(page) / 10

print page

# 获得搜索结果的页面数

if page > 5:

page = 5

newItems = []

for p in range(0, page):

url = ‘http://www.haosou.com/s?src=360sou_newhome&q=site:tjut.edu.cn&pn=‘+‘p‘

req = urllib2.Request(url)

res = urllib2.urlopen(req)

html = res.read().decode(‘utf-8‘)

pattern = re.compile(r‘linkinfo\"\>\(.+?\.tjut\.edu\.cn)‘)

items = re.findall(pattern, html)

# 去重操作

for item in items:

if item not in newItems:

newItems.append(item)

# 打印去重后的子域名列表

for item in newItems:

print item

#print html

测试结果如下:

1330

www.tjut.edu.cn

my.tjut.edu.cn

jw.tjut.edu.cn

jyzx.tjut.edu.cn

lib.tjut.edu.cn

cs.tjut.edu.cn

yjs.tjut.edu.cn

mail.tjut.edu.cn

acm.tjut.edu.cn

www.tjut.edu.cn

my.tjut.edu.cn

jw.tjut.edu.cn

jyzx.tjut.edu.cn

lib.tjut.edu.cn

cs.tjut.edu.cn

yjs.tjut.edu.cn

mail.tjut.edu.cn

acm.tjut.edu.cn

www.tjut.edu.cn

my.tjut.edu.cn

jw.tjut.edu.cn

jyzx.tjut.edu.cn

lib.tjut.edu.cn

cs.tjut.edu.cn

yjs.tjut.edu.cn

mail.tjut.edu.cn

acm.tjut.edu.cn

www.tjut.edu.cn

my.tjut.edu.cn

jw.tjut.edu.cn

jyzx.tjut.edu.cn

lib.tjut.edu.cn

cs.tjut.edu.cn

yjs.tjut.edu.cn

mail.tjut.edu.cn

acm.tjut.edu.cn

www.tjut.edu.cn

my.tjut.edu.cn

jw.tjut.edu.cn

jyzx.tjut.edu.cn

lib.tjut.edu.cn

cs.tjut.edu.cn

yjs.tjut.edu.cn

mail.tjut.edu.cn

acm.tjut.edu.cn

0x 02 总结

思路大概是这个样子:

先通过urllib2.Request()和 urllib2.urlopen()访问url

再从返回结果中得到搜索结果页面数

为了提高效率 页面数 大于 5 会只爬行搜索结果的前5个页面

后面 又做了去重操作 然后就得到二级域名列表咯 : )

中间蛋疼的 地方倒是 Py 的 转义符号问题  身边能有个可以问问的大牛多好~

后期 准备使用http://dns.aizhan.com/的查询结果 直接获得 IP以及旁站信息

文中图片引自:http://developer.51cto.com/art/201403/431104.htm(原博客链接失效)

原文:http://www.cnblogs.com/anka9080/p/getsubdomain.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值