python实现百度关键词排名查询

 更新时间:2014年03月30日 10:29:08   作者:  
这篇文章主要介绍了python实现百度关键词排名查询,需要的朋友可以参考下

就是一个简单的python查询百度关键词排名的函数,以下是一些简介:
1、UA随机
2、操作简单方便,直接getRank(关键词,域名)就可以了
3、编码转化。编码方面应该没啥问题了。
4、结果丰富。不仅有排名,还有搜索结果的title,URL,快照时间,符合SEO需求
5、拿来做个软件或者自己用都很方便。

功能是单线程实现,速度慢,大家可以参考修改成自己需要的。

复制代码 代码如下:

#coding=utf-8

import requests
import BeautifulSoup
import re
import random

def decodeAnyWord(w):
    try:
        w.decode('utf-8')
    except:
        w = w.decode('gb2312')
    else:
        w = w.decode('utf-8')
    return w

def 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 baiduURL

def 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.content

def getLastURL(rawurl): #get final URL while there're redirects
    r = requests.get(rawurl)
    return r.url

def 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})&nbsp;</span>')
    match = pat.findall(t)
    cacheDate = match[0]
    return cacheDate

def 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)

相关文章

  • python之如何实现延迟操作

    python之如何实现延迟操作

    这篇文章主要介绍了python之如何实现延迟操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • numpy矩阵数值太多不能全部显示的解决

    numpy矩阵数值太多不能全部显示的解决

    这篇文章主要介绍了numpy矩阵数值太多不能全部显示的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • numpy.reshape(-1,1)的具体使用

    numpy.reshape(-1,1)的具体使用

    本文主要介绍了numpy.reshape(-1,1)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 在Python的Django框架中获取单个对象数据的简单方法

    在Python的Django框架中获取单个对象数据的简单方法

    这篇文章主要介绍了在Python的Django框架中获取单个对象数据的简单方法,Django为数据的操作提供了诸多方便的功能,需要的朋友可以参考下
    2015-07-07
  • Python真题案例之二分法查找详解

    Python真题案例之二分法查找详解

    这篇文章主要介绍了python实操案例练习,本文给大家分享的案例中主要讲解了二分法查找,需要的小伙伴可以参考一下
    2022-03-03
  • Python实现Opencv cv2.Canny()边缘检测

    Python实现Opencv cv2.Canny()边缘检测

    这篇博客将介绍Canny边缘检测的概念,并利用cv2.Canny()实现边缘检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • python批量解压zip文件的方法

    python批量解压zip文件的方法

    这篇文章主要介绍了python批量解压zip文件的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • python中添加模块导入路径的方法

    python中添加模块导入路径的方法

    这篇文章主要介绍了python中添加模块导入路径的方法 ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)

    Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版

    这篇文章主要介绍了Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python和go语言的区别是什么

    python和go语言的区别是什么

    在本篇文章中小编给大家整理的是一篇关于go语言和python的区别点,需要的朋友们可以学习下。
    2020-07-07

最新评论