banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

使用Python開發一個批量查詢搜索排名的工具

最近工作中需要用上 Google SEOQ (搜索引擎优化),有了解过的朋友们应该都知道 SEO 必不可少的工作之一就是查询关键词的搜索排名。关键词少的时候可以一个一个去查没什么问题,但是到了后期,一个网站都有几百上千的关键词,你再去一人一个查,至少要花费数小时的时间。

虽然市面上有很多 SEO 免费或者收费工具,但免费的基本都不能批量查,我看到网上最多也就只能 10 个 10 个查询,而目查询速度很慢.

收费的工具如 Ahrefs、SEMrush 以月为单位收费最低也都要 995 / 月,当然如果觉得个格合适也可以进行购买,毕竟文些工具的很多功能都很实用。今天我给大家分享的这个排名搜索工具基于 python 实现,当然肯定是不需要花费任何费用,装 python 开发环境只即可

实现步骤
话不多说,上代码

import requests
from bs4 import Beautifulsoup

首先我们导入 requests 和 Beautifulsoup 两个库,requests 用于发送 HTTP 请求 Beautifulsoup 用于解析 HTML.

python
def get_google_rank(keyword, website):
    try:
        url = f"https://www.google.com/search?q={keyword}"
        headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36'}
        response = requests.get(url, headers=headers)
        response.raise_for_status()

        soup = BeautifulSoup(response.text, 'html.parser')
        search_results = soup.find_all('div', class_='g')

        for i, result in enumerate(search_results):
            link = result.find('a')['href']
            if website in link:
                return i + 1  # 返回排名(从1开始)
        
        return -1  # 如果未找到网站,返回-1

    except requests.exceptions.RequestException as e:
        print(f"An error occurred: {e}")
        return None

上述代码定义了一个名为 get gogle_rank 的函数,该函数接受两个参数: keyword (关键词) 和 ebsite (网站域名)。函数的目标是获取指定关键词在谷歌搜索结果中的排名。

在函数内部,首先构建了一个 URL,该 URL 使用指定的关键词进行公歌博索。然后设置了一个 User-Agen 头部,模拟一个浏览器的请求使用 requests.get 方法发送 HTTP 请求,获取搜索结果页面的响应。response.raise for_status () 用于检查请求是否成功,如果返回的状态码不是 200,会抛出一个异常。

接下来,使用 Beautifulsoup 库解析响应的 HTML 内容,创建一 Beautifulsoup 对象,并使用 html,parser 解析器进行解析。然后通过 find_a11 方法查找所有具有 class 属性为 g 的 div 元素,这些元素包含了搜索结果的信息。

接着使用 enumerate 函数遍历搜索结果列表,并使用 result.find (a"href1 获取每个搜索结果中的链接,如果指定的网站域名出现在链接中,就返回当前的排名 (从 1 开始计数)

如果循环结束后未找到指定的网站域名,函数返回 - 1,表示未找到网站。

如果在请求过程中发生异常,会获 requests,exceptions.RequestException 异常,并打印错误消息,然后返回 None。

# 示例用法
keywords = [摸鱼小游戏”,是男人就下100层",游戏
website = "haiyong.site'
for keyword in keywords:
6
rank = get google rank(keyword, website)
if rank is not None:
if rank == -1:
print(f“{keyword}没有排名")
10
11
else:
print(f"{keyword}排名第{rank}")

最后是一个示例用法的代码。定义了一个包含多个关键词的列表 keywords 和一个指定的网站域名 website

通过 for 循环遍历关键词列表,调用 get _googe.rank 函数获取每关词在谷歌搜索结果中的排名。如果返回的排名不为 one,则根据排名的值进行条件判断,如果排名为 - 1,打印关键词没有排名的消息,否则打印关键词的排名信息。

以上就是整段代码的含义和逻辑。该代码实现了获取指定关键词在谷歌搜索结果中的排名,并通过示例展示了如何使用这个函数。

完整代码#

import requests
from bs4 import BeautifulSoup

def get_google_rank(keyword, website):
    try:
        url = f"https://www.google.com.hk/search?q={keyword}"
        headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36'}
        response = requests.get(url, headers=headers)
        response.raise_for_status()

        soup = BeautifulSoup(response.text, 'html.parser')
        search_results = soup.find_all('div', class_='g')

        for i, result in enumerate(search_results):
            link = result.find('a')['href']
            if website in link:
                return i + 1  # 返回排名(从1开始)
        
        return -1  # 如果未找到网站,返回-1

    except requests.exceptions.RequestException as e:
        print(f"An error occurred: {e}")
        return None

# 示例用法
keywords = ['摸鱼小游戏','是男人就下100层','游戏']
website = 'haiyong.site'

for keyword in keywords:
    rank = get_google_rank(keyword, website)
    if rank is not None:
        if rank == -1:
            print(f"{keyword}没有排名")
        else:
            print(f"{keyword}排名第{rank}")

放个必应上查询的截图吧

image

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。