百度网页关键字抓取(向日葵智能python项目实战获取网站关键词排名分的方法)
优采云 发布时间: 2021-09-27 13:04百度网页关键字抓取(向日葵智能python项目实战获取网站关键词排名分的方法)
原帖:向日葵智能蟒蛇
前言
让我先解释一下标题的含义。现在,我有很多网站管理员。我想有流量到网站。一个非常好的渠道是搜索引擎。如果用户搜索某个关键词,如果能找到自己的网站,那么,流量就确定线性上升。这需要seo。如果你能知道网站的关键词在搜索引擎中的排名如何,对seo很有帮助,不会被黑眼圈。网络
貌似各大站长工具也可以提供关键词排名查询,我也用过,但是只能提供关键词的部分排名,而且好像只能提供前 100 名排名。正则表达式
本节将进行一个全新的python实战项目。您可以在搜索引擎中搜索网站关键词的排名。表达
实施计划
我们以百度搜索为例。搜索关键词后,会有很多结果。可以看出,每个结果都会有一些网站域名。如果某个结果中的链接是它自己的网站,那么这个结果就属于我们,我们可以得到它的排名。. 浏览器
右键查看网页源码,很容易发现我们需要的两个关键信息关键词和网站域名都存在,那么我们就可以完全按照python实际操作了制作网络爬虫的实战项目。在百度美女图片版块抓取信息。互联网
Python项目实战,获得网站关键词排名
分两步走:ide
1. Python实战项目,获取搜索资料
仔细观察搜索结果页面地址栏中的地址,很容易找到图案,只需在浏览器地址栏中输入:工具
http://www.baidu.com/s?wd=【搜索内容】&pn=【页码】0
按回车键实现搜索。那么,我们的python实战项目代码就可以这样写了:oop
#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
Python
复制
可以发现我们已经获取到了网页的源代码,即搜索信息。网站
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;">(.*?) ', re.S)
result = pattern.findall(data.content)
for item in result:
print item
Python
复制
运行脚本,发现网站域名已经被解压出来。
3. Python实战项目,计算网站关键词排名
接下来的工作就是进行字符串操作,只需要判断自己的域名网站是否出现在搜索结果中。找到后,计算出数字,即**网站关键词rank**。很少,python代码如下:
# searchTxt:要分析的网页源代码,webUrl:网站的网址
i = 0
def KeywordRank(searchTxt, webUrl):
global i
try:
pattern = re.compile(r'class="c-showurl" style="text-decoration:none;">(.*?) ', 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
复制
执行python实战项目脚本,发现成功。脚本认为我们的网站关键词排在第8位。
我们去浏览器搜索,发现确实排在第8位。这样我们就完成了一个新的python实战项目,获得了指定的网站关键词百度排名,并为seo提供了参考资料。
原帖地址: