python实战项目,获取指定网站关键词百度排名,为seo提供参考资料

前言


先解释一下标题的意思吧。现在个人站长已经非常多了,想要网站有流量,一个非常不错的渠道就是搜索引擎,用户搜索某个关键词,如果能搜到自己的网站,那么,流量肯定直线上升。这就需要seo,如果能够知道在搜索引擎中,自己网站的关键词排名怎样,肯定对seo有帮助,不至于一眼黑。

各大站长工具似乎也能够提供关键词排名查询,我也用过,但是它们只能提供一部分关键词的排名,而且似乎只能提供前100的排名。

本节将进行一个新的python实战项目,能够搜索自己网站关键词在搜索引擎中的排名。

实现方案


咱们以百度搜索为例,搜索关键词后,会有很多结果。可以看到,每个结果都会有部分网站域名的,如果某一条结果里的链接是自己网站的,那么,这条结果就属于咱们的,获取其排名就可以了。


右键,查看网页源代码,很轻易就发现了咱们需要的 关键词网站域名 两项关键信息都在,那么,咱们完全可以按照 python实战项目,制作网络爬虫爬取百度美女图片一节抓取信息。


python项目实战,获取网站关键词排名


分两步走:

1. python实战项目,获取搜索信息

仔细观察搜索结果页地址栏的地址,很容易发现规律,只需要在浏览器地址栏输入:

http://www.baidu.com/s?wd=【搜索内容】&pn=【页码】0

按回车,就可以实现搜索。那么,咱们的python实战项目代码可以如下写:

#coding:utf-8
import requests
url = u"http://www.baidu.com/s?wd=%s&pn=%d0" % (u"向日葵智能|智能创意", 1)
data = requests.get(url)
print data.content

可以发现,咱们获得到了网页的源代码,即搜索信息。

2. python实战项目,正则表达式提取有用信息

正则表达式的使用,可以参照:python基础,什么是正则表达式,正则表达式的使用,关键就是找规律。首先,要明确的是,咱们只关心网站域名信息,只要找出域名信息即可。

在源代码页搜索这串字符,发现一共发现了10条结果,这与本页一共10项搜索结果对应起来了,因此咱们正则匹配这串字符串是可行的。正则代码可以如下写:

#coding:utf-8
import requests
url = u"http://www.baidu.com/s?wd=%s&pn=%d0" % (u"向日葵智能|智能创意", 1)
data = requests.get(url)
#print data.content

pattern = re.compile(r'class="c-showurl" style="text-decoration:none;">(.*?)&nbsp', re.S)
result = pattern.findall(data.content)

for item in result:
    print item

运行脚本,发现网站域名被提取出来了。

3. python实战项目,计算网站关键词排名

接下来的工作就是字符串操作了,只需要判断自己网站的域名是否出现在搜索到的结果中就行了。找到后,计算编号,就是**网站关键词排名**了。不多说,python代码如下:

# searchTxt:要分析的网页源代码,webUrl:网站的网址
i = 0
def KeywordRank(searchTxt, webUrl):
    global i
    try:
        pattern = re.compile(r'class="c-showurl" style="text-decoration:none;">(.*?)&nbsp', re.S)
        result = pattern.findall(searchTxt)     
        for item in result:
            i = i+1
            print "rank %d: %s"%(i,item)
            if "xrkzn.cn" in item:
                return i
    except Exception, e:
        print "error occurs"
        return None
    return None

# content:要搜索的关键词, page:要搜索的页码
def BaiduSearch(content, page):
    try:
        url = u"http://www.baidu.com/s?wd=%s&pn=%d0" % (content, page)
        data = requests.get(url)
        return data.content
    except Exception, e:
        return None

if __name__ == "__main__":
    loops = 101     # 最多查到第 101 页
    page = 0
    while(loops):
        searchTxt = BaiduSearch(u"向日葵智能|智能创意", page)
        page = page+1
        rank = KeywordRank(searchTxt, "xrkzn.cn")
        if None!=rank:
            print u"输入的关键词排在第 %d 名" % rank
            break
        loops = loops - 1

执行python实战项目脚本,发现成功了,脚本认为咱们的网站关键词排第 8 名。

咱们去浏览器搜索一下,发现的确是排在第 8 名。这样,我们就完整了一个新的python实战项目,获取指定网站关键词百度排名,为seo提供参考资料

阅读更多:   Python
仅有 1 条评论
  1. […] python实战项目,获取指定网站关键词百度排名,为seo提供参考资料 […]

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif