Python实现关键词排名查询(百度、搜狗、神马)

Python 投稿 62800 0 评论

Python实现关键词排名查询(百度、搜狗、神马)

如果你是一个站长,并且有很多网站的话,每次去百度、搜狗、神马、360、头条等搜索搜索引擎中查询排名会很费时间,为了解决这个,分享一个Python自动化代码,用来更新你的网站再各大搜索引擎的排名。
示例只写了百度pc和360的排名,百度手机、搜狗、神马也是差不多的,直接自己修改就行了。

import requests
from bs4 import BeautifulSoup
import re
import time
from fake_useragent import UserAgent
 
 
# 搜索引擎排名类
class SearchRank():
    # 关键词
    keyword = None
    # 匹配的域名
    matchUrl = None
    # 当前排名
    rank = 0
    # 请求头
    headers = {
        'User-Agent': UserAgent().random
    }
 
    # 初始化
    def __init__(self, keyword, matchUrl):
        self.keyword = keyword
        self.matchUrl = matchUrl
 
    # 百度pc排名
    def rankBaiduPc(self):
        for i in range(0, 100, 10):
            url = f'https://www.baidu.com/s?ie=utf-8&wd={self.keyword}&pn={i}'
            res = requests.get(url=url, headers=self.headers)
            if res.status_code == 200:
                res_text = res.text
                # print(res.content.decode('utf-8'))
                soup = BeautifulSoup(res_text, 'lxml')
                # 找出当前页中id为content_left下的子div的数据,返回的是一个列表数据
                html = soup.select('#content_left>div[tpl=se_com_default]')
                # 如果html的长度为0,证明当前操作频繁,没有获取到所需数据
                print(len(html))
                for j in range(len(html)):
                    # 在结果中匹配是否包含有matchUrl的值
                    result = re.search(self.matchUrl, str(html[j]))
                    if bool(result):
                        self.rank = self.rank + j
                        return self.rank
                self.rank += len(html)
            time.sleep(10)
 
    # 360排名
    def rank360(self):
        for i in range(0, 10):
            url = f'https://www.so.com/s?ie=utf-8&src=360sou_newhome&q={self.keyword}&pn={i}'
            res = requests.get(url=url, headers=self.headers)
            if res.status_code == 200:
                res_text = res.text
                # print(res.content.decode('utf-8'))
                soup = BeautifulSoup(res_text, 'lxml')
                # 找出当前页中所有包含类名res-list的数据,返回的是一个列表数据
                html = soup.select('.res-list')
                # 如果html的长度为0,证明当前操作频繁,没有获取到所需数据
                print(len(html))
                for j in range(len(html)):
                    # 在结果中匹配是否包含有matchUrl的值
                    result = re.search(self.matchUrl, str(html[j]))
                    if bool(result):
                        self.rank = self.rank + j
                        return self.rank
                self.rank += len(html)
            time.sleep(10)
 
 
obj = SearchRank('关键字排名', 'www.feishuai.vip')
res = obj.rank360()
if res:
    print(f'网站排名是{res}')
else:
    print('当前关键词未有排名')

编程笔记 » Python实现关键词排名查询(百度、搜狗、神马)

赞同 (106) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽