python在线编程_python在线编程_python在线编程_python在线编程_python在线编程

时间里:04-08 素材来源:

老王python

, 标签:

python

前不久为了自己更最好的查询老王python的外链,这是各种准备写这个python urllib2 查询脚因为查询,大多数数查询外链也很准确的工具还是还是yahoo的外链工具,还是还都都有一点不方便的这是,yahoo查出的外链要一页一页的翻,好累为了自己 非常最好的方便统计,举个例子我想把相关网站的外链几乎全部全部读取到文件里,这个也最好的在本地来采取统计。

废话不说,上脚本吧。


#encoding=utf-8
#@author:老王python
#@description:检査相关网站的外链

import urllib
from sgmllib import SGMLParser
import re
import sys

infolist = {}#结果呢列表

class LinkParser(SGMLParser):
	'''抓取link列表的关键信息'''
	
	def reset(self):
		SGMLParser.reset(self)
		self.url = ''#链接文本
		self.li_check = 0
		self.a_check = 0
		self.jt_url = ''#详细url
		self.infolist = {}


def start_li(self, tag):
	'''检测li开头'''
	if tag:
		if tag[0][1] == 'sco5li0' or tag[0][1] == 'sco5li1':
			self.li_check = 1

def start_a(self,tag):
	'''检测a开头'''
	if self.li_check == 1:
		if not tag[0][1].startswith('http://203.209.253.250'):
			host_re = re.compile(r'^https?://(.*?)($|/)', 
			re.IGNORECASE
		) 
	self.url = host_re.search(tag[0][1]).group(1)
	self.jt_url = tag[0][1]
	self.a_check = 1


def handle_data(self, text):
	'''其他处理

空白文本'''
	txt = text.strip()

	if txt and self.a_check and txt != '快照':
		checkurl = '%s,%s' % (self.url,self.jt_url)
		self.infolist[checkurl] = txt

		if txt == '':
			return 

def end_li(self):
	self.li_check = 0

def end_a(self):
	self.a_check = 0


numre = re.compile(r'.+')#匹配总的记录数
pnum = re.compile(r'\d+')

checkurl = ''#查询相关网站的公司地址,举个例子http://www.xxx.com
checkurl = urllib.quote(checkurl)#请求公司地址

pageurl = 'http://sitemap.cn.yahoo.com/search?bwm=i&bwmo=d&p=%s' % (checkurl)
content = urllib.urlopen(pageurl).read()
c = numre.search(content).group(0)
totalnum = int(pnum.search(c).group(0))#总的外链数


host_re = re.compile(r'^http://(?Pwww\.(?:[A-Z0-9-]+\.){1}[A-Z\.]{2,6})$', 
re.IGNORECASE
)

pagesize = 50#一页最新数据50条

if totalnum % pagesize:
	page = totalnum/pagesize
else:
	page = (totalnum/pagesize)+1


f = file('a.txt','w')

for k in xrange(page):
	parser = LinkParser()
	url = 'http://sitemap.cn.yahoo.com/search?bwm=i&bwmo=d&p=%s&b=%s' % (checkurl,k*50)
	print 'url=========>',url
	cstr = urllib.urlopen(url).read()
	parser.feed(cstr)
	parser.close()

for m in parser.infolist:
	domain,jt_url = m.split(',')
	print 'domain--------->',domain
	print 'jt_url--------->',jt_url
	t = 'url:%s,jt_url:%s,title:%s\n' % (domain,jt_url,parser.infolist[m].decode('utf-8').encode('utf-8'))
	f.write(t)
	f.close()
★网站部分内容来源网络,如不经意侵犯了您的权益请发送邮件联系我们在36小时内删除★。
本文链接:http://www.quxuepython.com/article/8434.html
上一篇:
上一篇: