当前位置:首页 > SEO心得 > 正文内容

python查询百度seo关键词排名优化版

野猪乔治7个月前 (12-29)SEO心得293

python查询百度SEO关键词排名优化版,提供了百度和360两个平台的查询代码。

#百度排名查询
# -*- coding=utf-8 -*-
import requests
import re
import time
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
#获取搜索网址
def get_search_url(keyword,num):
    search_urls= []
    for i in range(0, num):
        ym = i * 10
        search_url=f"https://www.baidu.com/s?wd={keyword}&ie=UTF-8&pn={ym}"
        search_urls.append(search_url)
    #print(search_urls)
    return search_urls
#获取搜结果内容
def get_search_object(search_url):
    search_results=[]
    req=requests.get(search_url,headers=headers,timeout=10).text
    search_contentze=r'<div id="content_left">(.+?)<div style="clear:both;height:0;"></div>'
    search_content=re.findall(search_contentze,req,re.S)
    search_content=search_content[0]
    search_objectze=r'<div class="result(.+?)</h3>'
    search_object=re.findall(search_objectze,search_content,re.S)
    search_objects=search_object
    #print(search_object)
    return search_objects
#获取真实地址
def get_website_url(baidu_url):
    if "http://" not in baidu_url:
        zsurl = f'https://www.baidu.com{baidu_url}'
    # 解析真实地址
    else:
        r = requests.head(baidu_url, stream=True)
        website_url = r.headers['Location']
    #print(website_url)
    return website_url
#获取搜索数据
def get_search_data(search_objects,search_website):
    seach_data=''
    baidu_idze1 = r'id="([0-9]{1,4})" srcid'
    baidu_idze2 = r'id="([0-9]{1,4})" tpl'
    titleze = r'target="_blank"(.+?)</a>'
    baidu_urlze1 = r'href = "(.+?)"'
    baidu_urlze2 = r'href="(.+?)"'
    for search_object in search_objects:
        # 获取排名
        try:
            baidu_id = re.findall(baidu_idze1, search_object, re.S)
            baidu_id= baidu_id[0]
        except:
            baidu_id = re.findall(baidu_idze2, search_object, re.S)
            baidu_id = baidu_id[0]
        #print(baidu_id)
        # 获取标题
        title = re.findall(titleze,search_object,re.S)
        title = title[0]
        # 去除多余的字符
        title = re.sub(r'[\n\t> </em>]', "", title)
        #print(title)
        # 获取链接
        try:
            baidu_url= re.findall(baidu_urlze1,search_object,re.S)
            baidu_url= baidu_url[0]
        except:
            baidu_url= re.findall(baidu_urlze2,search_object,re.S)
            baidu_url= baidu_url[0]
        #print(baidu_url)
        website_url=get_website_url(baidu_url)
        #print(website_url)
        if search_website in website_url:
            print(f'关键词:{keyword},排名:{baidu_id},标题:{title},网址:{website_url},百度链接:{baidu_url}')
            search_result= f'关键词:{keyword},排名:{baidu_id},标题:{title},网址:{website_url},百度链接:{baidu_url}'
            seach_data = '%s%s%s' % (seach_data, search_result, '\n')
    time.sleep(3)  # 设置延迟间隔
    return seach_data
if __name__ == '__main__':
    search_datas=''
    i=0
    keyword = input('请输入关键词>>')
    num = int(input('请输入最大查询页数>>'))
    search_website = input('请输入网址(建议输入不带www网址)>>')
    search_urls=get_search_url(keyword,num)
    for search_url in search_urls:
        print(f'正在查询{i + 1}页排名...')
        search_objects=get_search_object(search_url)
        #print(search_objects)
        search_data=get_search_data(search_objects, search_website)
        #print(search_data)
        i=i+1
        search_datas=search_datas+search_data
    print('========================查询结果========================\n\n')
    print(search_datas)
    print('\n\n========================查询结束========================\n')
#360搜索排名查询
# -*- coding=utf-8 -*-
import requests
from lxml import etree
headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
def ss360(keyword,num,search_url):
    search_datas=''
    for x in range(1,num+1):
        print(f"正在查询第{x}页搜索结果...")
        url=f"https://www.so.com/s?q={keyword}&pn={x}"
        html=requests.get(url,headers=headers).text
        #print(html)
        con=etree.HTML(html)
        #print(con)
        title=con.xpath('//h3[@class="res-title "]/a/text()')
        #print(title)
        #print(len(title))
        datas=con.xpath('///h3/a')
        #print(len(datas))
        for data in datas:
            #print(data)
            try:
                data_res=data.attrib['data-res']
                #pos=re.findall('"pos":(.+?),',data_res,re.S)
                #print(pos[0])
                data_res=eval(data_res) #转换为字典数据
                pos=data_res['pos']
                print(pos)
            except:
                pos=''
            try:
                data_url=data.attrib['data-url']
            except:
                data_url=data.attrib['href']
            if "http://e.360.cn/static/" not in data_url and "javascript:" not in data_url:
                print(data_url)
                print('\r')
            if search_url in data_url:
                pm=(x-1)*10+pos
                print(f'第{x}页,排名:{pos}/{pm},链接:{data_url}')
                search_data=f'第{x}页,排名:{pos}/{pm},链接:{data_url}'
                search_datas ='%s%s%s'%(search_datas,search_data,'\n')
    print(search_datas)
    return search_datas
if __name__ == "__main__":
    search_datas = ''
    keyword = input('请输入关键词>>')
    num = int(input('请输入最大查询页数>>'))
    search_website = input('请输入网址(建议输入不带www网址)>>')
    search_datas=ss360(keyword,num,search_website)
    print('========================查询结果========================\n\n')
    print(search_datas)
    print('\n\n========================查询结束========================\n')


版权声明:本文由V8SEO技术发布,如需转载请注明出处。

本文链接:https://www.seojs.cn/post/10516.html

分享给朋友:

相关文章

seo站内优化和站外优化有哪些不同

seo站内优化和站外优化有哪些不同

我们通常所讲的搜索引擎优化技术就是seo技术,一般的seo技术分为两种形式。一种是站内的seo优化,主要指我们网站内部的内容结构和笔墨等方面,让我们的网站看起来更加的优质;另外一种就是站外的有话啦这外...

做网站seo优化如何收集数据,有哪些方法

做网站seo优化如何收集数据,有哪些方法

大多数大型网站改版之前或者新增功能之前会通过问卷调查来分析用户的需求,然后进行改版,还有部分小网站会通过百度热力图来修改自己网站体验,那么小编们做网站seo应该要如何收集数据,收集数据的方法又有哪些呢...

做seo优化哪些能做,哪些不能做?

做seo优化哪些能做,哪些不能做?

很多人在做seo优化的时候仅仅只是简单的看了一些视频,就认为自己会做seo了,自以为大的盲目发布垃圾外链,交换垃圾链接等等最后导致原有的排名都掉了,甚至网站被降权K站等问题。今天我在这里告诉大家,做s...

seo优化需要每天更新文章吗,更新频率是多少?

seo优化需要每天更新文章吗,更新频率是多少?

做网站seo优化的如何更新网站的内容,发布的时间在什么时间段好,以及网站每天更新文章频率是多少。这些优化的细节对网站关键词排名是非常重要的。今天我们主要来聊一聊,企业做seo优化需要每天更新文章吗,更...

解读Baiduspider抓取系统的原理与索引建库

解读Baiduspider抓取系统的原理与索引建库

关于百度搜索引擎工作原理知识,有不少站长SEO还没有认真阅读和理解,本文解读Baiduspider抓取系统原理与索引建库,让SEOer对百度蜘蛛的收录索引建库有更多了解。一,Spider 抓取系统的基...

网站seo优化的白帽子和黑帽子

网站seo优化的白帽子和黑帽子

seo优化的方式方法关键有黑帽(blackhat)、白帽子(whitehat)两类。根据做弊技巧蒙骗百度搜索引擎和来访者,最后将遭受百度搜索引擎处罚的方式被称作黑帽,例如掩藏关键词、生产制造很多的me...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。