当前位置:首页 > Python爬虫 > Python计数去重代码

Python计数去重代码

作者:二营长 发布时间:2016-12-11 点击:

前几天有个需求,在百度上抓了一批serp的url,需求是对这些url进行提取每个url的域名、然后对域名计数去重,提取每个url的域名好弄,有现成的函数能用,就是这个计数去重,其实在自己的电脑上用shell命令一行就搞定,无奈在公司电脑上安装cygwin的时候总是出错,工作日也没有时间弄这个,所以干脆就找了个python的脚本。

比如说抓了十万个url,针对每个url提取出对应的域名,上代码:

from urlparse import urlparse

conn = MySQLdb.connect('localhost','root','','rank',charset='utf8') #连数据库,拿url   
with conn:    
	cur = conn.cursor()    
	sql = 'select keyword,url,pcrank from t_rank_copy'  #从表里拿数据  
	cur.execute(sql)    
	conn.commit()    
	rowNum = int(cur.rowcount)    
	for data in range(rowNum):    
		row = cur.fetchone()    
		with open('domain.txt',r'a+') as my: 
		        #利用urlparse对解析每个url,提取域名   
			my.write(urlparse(row[1]).netloc+'\n')    
	print '写入完毕'

把域名写到domain.txt以后,再进行计数去重:

#coding=utf-8    
import operator    
f = open("domain.txt")    
count_dict = {}    
for line in f.readlines():    
line = line.strip()    
count = count_dict.setdefault(line, 0)    
count += 1    
count_dict[line] = count    
sorted_count_dict = sorted(count_dict.iteritems(), key=operator.itemgetter(1), reverse=True)    
f1 = open('last.txt',r'a+')    
for item in sorted_count_dict:    
	print "%s,%d" % (item[0], item[1])    
	f1.write(item[0]+'>'+str(item[1])+'\n')    
f1.close()

亲测好用,其实计数去重用shell一行就可以搞定:

cat domain.txt|sort|uniq -c|sort -r|head -100 > result.txt


邮箱:techseo.cn@gmail.com,欢迎交流。
上一篇:Python利用百度翻译API写翻译器      下一篇:Python爬虫入门与进阶