11

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

 3 years ago
source link: https://blog.popkx.com/python-project-get-website-keyword-rank-for-seo/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

发表于 2018-06-09 23:06:32   |   已被 访问: 886 次   |   分类于:   Python   |   1 条评论

先解释一下标题的意思吧。现在个人站长已经非常多了,想要网站有流量,一个非常不错的渠道就是搜索引擎,用户搜索某个关键词,如果能搜到自己的网站,那么,流量肯定直线上升。这就需要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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK