查询百度中关键词排名,百度关键词排名,就是一个简单的pytho


就是一个简单的python查询百度关键词排名的函数,以下是一些简介:

1、UA随机

2、操作简单方便,直接getRank(关键词,域名)就可以了

3、编码转化。编码方面应该没啥问题了。

4、结果丰富。不仅有排名,还有搜索结果的title,URL,快照时间,符合SEO需求

5、拿来做个软件或者自己用都很方便。

缺点是单线程,速度慢

#coding=utf-8import requestsimport BeautifulSoupimport reimport randomdef decodeAnyWord(w):    try:        w.decode('utf-8')    except:        w = w.decode('gb2312')    else:        w = w.decode('utf-8')    return wdef createURL(checkWord):   #create baidu URL with search words    checkWord = checkWord.strip()    checkWord = checkWord.replace(' ', '+').replace('\\n', '')    baiduURL = 'http://www.baidu.com/s?wd=%s&rn=100' % checkWord    return baiduURLdef getContent(baiduURL):   #get the content of the serp    uaList = ['Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322;+TencentTraveler)',    'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729)',    'Mozilla/5.0+(Windows+NT+5.1)+AppleWebKit/537.1+(KHTML,+like+Gecko)+Chrome/21.0.1180.89+Safari/537.1',    'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)',    'Mozilla/5.0+(Windows+NT+6.1;+rv:11.0)+Gecko/20100101+Firefox/11.0',    'Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+SV1)',    'Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+GTB7.1;+.NET+CLR+2.0.50727)',    'Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+KB974489)']    headers = {'User-Agent': random.choice(uaList)}    r = requests.get(baiduURL, headers = headers)    return r.contentdef getLastURL(rawurl): #get final URL while there're redirects    r = requests.get(rawurl)    return r.urldef getAtext(atext):    #get the text with <a> and </a>    pat = re.compile(r'<a .*?>(.*?)</a>')    match = pat.findall(atext.replace('\\n', ''))    pureText = match[0].replace('<em>', '').replace('</em>', '')    return pureText.replace('\\n', '')def getCacheDate(t):    #get the date of cache    pat = re.compile(r'<span class="g">.*?(\\d{4}-\\d{1,2}-\\d{1,2}) </span>')    match = pat.findall(t)    cacheDate = match[0]    return cacheDatedef getRank(checkWord, domain): #main line    checkWord = checkWord.replace('\\n', '')    checkWord = decodeAnyWord(checkWord)    baiduURL = createURL(checkWord)    cont = getContent(baiduURL)    soup = BeautifulSoup.BeautifulSoup(cont)    results = soup.findAll('table', {'class': 'result'})    #find all results in this page    for result in results:        checkData = unicode(result.find('span', {'class': 'g'}))        if re.compile(r'^[^/]*%s.*?' %domain).match(checkData.replace('<b>', '').replace('</b>', '')): #改正则            nowRank = result['id']  #get the rank if match the domain info            resLink = result.find('h3').a            resURL = resLink['href']            domainURL = getLastURL(resURL)  #get the target URL            resTitle = getAtext(unicode(resLink))   #get the title of the target page            rescache = result.find('span', {'class': 'g'})            cacheDate = getCacheDate(unicode(rescache)) #get the cache date of the target page            res = u'%s, 第%s名, %s, %s, %s' % (checkWord, nowRank, resTitle, cacheDate, domainURL)            return res.encode('gb2312')            break    else:        return '>100'domain = 'www.baidu.com' #set the domain which you want to search.print getRank('百度', domain)#该片段来自于http://byrx.net

评论关闭