本帖最后由 小小 于 2014-6-10 13:15 编辑
这是一个简易查询百度前十的源码,可以批量查询,汇总出各个网址总数,用于发现潜在的竞争对手。
使用方法,自备自己的词库。
缺点:汇总出来的数据未有排序(能力不足),未去保存在文件中(可以自我完成。),只能统计前十,代码可能臃肿
自备词库
#encoding:utf-8
import urllib2
import re
import time
import random
def getInfo(content): #提取初步信息
urls_pat=re.compile(r'<span class="g">(.*?)</span>|<span class="c-showurl">(.*?)</span>|<span id="ala_img_desc" .*?>(.*?) - <a style=".*?</a></span>')
siteUrls=re.findall(urls_pat,content)
info=''
for i in siteUrls:
for j in i:
info=info+j
getUrls(info)
info=''#每次结束情况info信息
def getUrls(info):#提取Urls
strip_tag_pat=re.compile(r'<.*?>')
strip_tag_pat1=re.compile(r' ')
i0=re.sub(strip_tag_pat,'',info)
i0=re.sub(strip_tag_pat1,'',i0)
i0=i0.strip()
i1=i0.split('/')
siteUrl=''.join(i1[0])
print siteUrl
huiZong(siteUrl)
def huiZong(siteUrl):#统计每个网址出现的次数
if(arrUrl.has_key(siteUrl)):
arrUrl[siteUrl]+=1
else:
arrUrl.setdefault(siteUrl,1)
def readUrl(gjc):#读取网页
url = 'http://www.baidu.com/s?wd=' + gjc
content = urllib2.urlopen(url).read()
getInfo(content)
f=open("gjc.txt","r")#词库,一行一个
lines = f.readlines()
arrUrl ={}
for gjc in lines:
readUrl(gjc)
print "---------------------"
time.sleep(random.randint(1,3))#暂停1-3s 防止出现验证码
f.close()
for key in arrUrl:
print key+"-->"+str(arrUrl[key])
结果为
简易排名.rar
(974 Bytes, 下载次数: 1351)
|