手机
当前位置:查字典教程网 >脚本专栏 >python >python实现百度关键词排名查询
python实现百度关键词排名查询
摘要:就是一个简单的python查询百度关键词排名的函数,以下是一些简介:1、UA随机2、操作简单方便,直接getRank(关键词,域名)就可以了...

就是一个简单的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>.*?(d{4}-d{1,2}-d{1,2})</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实现2014火车票查询代码分享

用python实现批量重命名文件的代码

Python Trie树实现字典排序

python实现ip查询示例

python 实现堆排序算法代码

python实现360皮肤按钮控件示例

python 实现文件的递归拷贝实现代码

python 实现归并排序算法

python3.0 字典key排序

python实现bitmap数据结构详解

精品推荐
分类导航