python实现百度关键词排名查询
admin
2023-07-31 02:07:14
0

就是一个简单的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 and
    pat = re.compile(r\'(.*?)\’)
    match = pat.findall(atext.replace(\’\\n\’, \’\’))
    pureText = match[0].replace(\'\’, \’\’).replace(\'\’, \’\’)
    return pureText.replace(\’\\n\’, \’\’)

def getCacheDate(t):    #get the date of cache
    pat = re.compile(r\'.*?(\\d{4}-\\d{1,2}-\\d{1,2}) \’)
    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(\'\’, \’\’).replace(\'\’, \’\’)): #改正则
            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)

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...