コミュニケーションを学んでいる方、ソースコードをお探しの方は【Python実践プロジェクトのソースコード25選】をクリックしてください。
背景を構築する
最近、仕事で Google SEOQ (検索エンジン最適化) を使用する必要がありますが、SEO に欠かせないタスクの 1 つがキーワードの検索順位をクエリすることであることを知っている友人は知っているはずです。キーワードが少ないうちは一つ一つチェックしていっても問題ありませんが、後半になるとWebサイトに数百、数千のキーワードが存在し、一人一人チェックしていくと少なくとも数時間はかかります。
SEOの無料ツールや有料ツールは数多く出回っていますが、無料のものは基本的に一括検索ができず、インターネット上のクエリは多くても10件程度しかなく、クエリ速度も非常に遅いことがわかります。
AhrefsやSEMrushなどの有料ツールは最低月額995円ですが、自分に合っていると思ったらもちろん購入することもできますが、やはりこれらのツールは便利な機能が多いです。今回紹介するランキング検索ツールはPythonをベースにしたもので、もちろんお金はかかりません、Pythonの開発環境をインストールするだけで使えます。
実装手順
早速、コードに進みましょう
import requests
from bs4 import Beautifulsoup
まず、リクエストと Beautifulsoup という 2 つのライブラリをインポートします。リクエストは HTTP リクエストの送信に使用され、Beautifulsoup は HTML の解析に使用されます。
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 (Web サイトのドメイン名) という 2 つのパラメーターを受け入れます。この関数の目的は、Google 検索結果で指定されたキーワードのランキングを取得することです。
関数内では、まず URL が構築され、指定されたキーワードを使用して公開歌唱を実行します。次に、User-Agen ヘッダーを設定してブラウザー要求をシミュレートし、requests.get メソッドを使用して HTTP 要求を送信し、検索結果ページの応答を取得します。response.raise for_status() はリクエストが成功したかどうかを確認するために使用され、返されたステータス コードが 200 でない場合は例外がスローされます。
次に、Beautifulsoup ライブラリを使用して応答の HTML コンテンツを解析し、Beautifulsoup オブジェクトを作成し、解析に html パーサー パーサーを使用します。次に、find_a11 メソッドを使用して、class 属性が g であるすべての div 要素を検索します。これらの要素には、検索結果の情報が含まれています。
次に、enumerate 関数を使用して検索結果のリストを走査し、result.find(a"href1 を使用して各検索結果のリンクを取得します。指定された Web サイトのドメイン名がリンクに表示される場合は、現在のランキング (1 から数えて) を返します。
ループ終了後に指定された Web サイトのドメイン名が見つからない場合、関数は -1 を返し、Web サイトが見つからなかったことを示します。
リクエスト中に例外が発生した場合、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}")
最後に使用例のコードを示します。複数のキーワードと指定された Web サイトのドメイン名 Web サイトを含むリスト キーワードを定義します
for ループを通じてキーワード リストを走査し、get_googe.rank 関数を呼び出して、Google 検索結果内の各キーワードのランキングを取得します。返された順位が 1 でない場合は、順位の値に基づいて条件判定を行い、順位が -1 の場合はキーワードに順位がないことを出力し、それ以外の場合はキーワードの順位情報を出力します。
以上がコード全体の意味とロジックです。このコードは、Google 検索結果における指定されたキーワードの順位を取得することを実現し、この関数の使用方法を例を示して示します。
完全なコード
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}")
ラダーに問題があるので、まずクエリのスクリーンショットを Bing に保存しましょう。
さて、今日の共有はこれで終わりです。また次回お会いしましょう。