ウェブサイトのキーワードランキングの完全自動監視(Python実装)

ウェブサイトのキーワードランキングの完全自動監視(Python実装)

この記事から始めて、プログラム自体の知識について書くことに多くのエネルギーを費やすつもりはありません。結局のところ、これはさまざまな本で見つけることができる内容です。残りの学習は、組み込み関数の使用と、特に pycurl、re、threading などのモジュールの使用方法であり、これらには徐々に慣れていく必要があります。

勉強中に質問がある場合は、この記事のコメント欄に投稿してください。時間があれば、できる限りお答えします。

プログラム要件

少し規模の大きいウェブサイトの場合、SEO の効果を分析したり、Baidu や Google などの動向を把握したりするために、定期的にランキングを監視する必要があるキーワードが多数あることがよくあります。

重要な問題は、データ収集が完全に自動化されているかどうかです。 Google Analytics を頻繁に使用してデータ分析を行っていると、データ分析のニーズが多様であることを感じるでしょう。さまざまな次元の完全なデータを事前に持っている場合にのみ、データ不足に制限されることなく、当初のアイデアに従って分析を行うことができます。 Google Analytics などの優れたツールは、このデータを完全に自動的に収集し、トラフィックの多様な分析を実行するための SEO の基盤を築きます。同様に、分析の自由度を高めたい場合は、できるだけ多くの種類の履歴データを記録する必要があります。これを日常的な作業として実行すると非常に長い時間がかかるため、自動収集が重要になります。

ランキングを監視するための既存の主なソリューションは、商用ソフトウェアの Rank Tracker を使用することですが、理想的とは言えない側面もあります。たとえば、既存のソフトウェアのほとんどには、機能が柔軟でないという問題があります。さらに、最大の欠点の 1 つは、実行するにはグラフィカル インターフェイスを備えたシステムを見つける必要があることです (Java で実装されており、複数のオペレーティング システム バージョンがあるため、必ずしも Windows である必要はありません)。

DIY Python スクリプトの場合は、Linux システムの crontab (システムレベルのスケジュールされたタスク) に配置し、スケジュールされた時間に自動的に実行して生データを収集できます。次に、必要に応じて別のスクリプトを使用して生データを処理し、さまざまな次元で分析を実行します。一般的に必要なのは、Linux システムを搭載した低構成の VPS と、合計 100 行以下の Python コードです (Windows でもこれらを実現できますが、比較的面倒です)。

次に、より具体的なニーズを分析します。ここにいくつかの原則があります:

1. データ量が多すぎてハードディスクに負担がかかる場合(毎日数GBのログを解析するなど)を除き、考えられる限り多くのデータを記録します。分析のニーズは常に変化するため、包括的なデータは準備に役立ちます。

2. 上記と同様に、データ量が極端に多い場合を除き、必ずすべての履歴データを保存してください。大量のデータを扱う場合には、実際の状況に応じて一定期間のデータを保存することも必要です(例えば、最初の 3 年間は毎月コピーを保存し、現在の 1 年間は毎週コピーを保存するなど)。多くの場合、履歴データの比較は非常に重要です。

3. データが非常に単純な場合は、txt を使用して行ごとに保存します。データが比較的単純な場合は、csv を使用して行と列ごとに保存します。データが比較的複雑な場合は、MongoDB などのキー値 NoSQL ストレージの使用を検討できます。データがより複雑な場合は、MySQL などのリレーショナル データベースを使用して保存します。しかし、これらは絶対的なものではなく、実際の状況によって異なります。

現在のニーズでは、キーワードのランキング傾向を監視することが目的であるため、通常は最大で数千個のキーワードを監視すれば十分です。おそらく、ウェブサイトは比較的大きく、数十万のキーワードのランキングを知りたいでしょう。しかし、ランキングの傾向を理解するために、すべてのキーワードをクエリする必要はありません。サンプルとして、その一部をランダムに選択するだけで済みます。

キーワードは多くても数千個しかないため、ランキングデータは 1 日に 1 回記録するのが最適です (安定性を確保するという条件で、Google は 1 つの IP に対して 1 日に 5000 語以上、Baidu は数万語をクエリできます)。また、データ自体は主にキーワード、ランキング、ランディングページのURLなどで構成されており、ファイルサイズが非常に小さいため、データのコピーは毎日保存されます。

データの保存方法としては、一般的に csv を選択することをお勧めします。 Excel スプレッドシート (xls) とまったく同じ方法でデータを保存します。

コードの実装

これらのコードには次のランタイム環境が必要です。

Linux オペレーティング システム

Pythonのサードパーティモジュールpycurl

Python で Web ページをダウンロードする最も簡単な方法は次のとおりです。

urllib2をインポートする

urllib2.urlopen('http://***.com/').read() を印刷します。

urllib2 モジュール自体は優れた機能を備えていますが、pycurl モジュールにはまだまだ及びません。また、少し複雑な操作を行う場合は、urllib2 モジュールよりも pycurl モジュールを使用する方がはるかに便利です。 Pycurl は使いこなさなければならないモジュールの 1 つですが、使い始めるには少々面倒かもしれません。ここでは、便利に使用できるように自分でモジュールを作成しました。

pycurl インポートから *

StringIO、time、random をインポートする

def curl(url, 再試行=False, 遅延=1, **kwargs):

'''基本的な使用法: curl('http://www.xxx.com/') は URL をダウンロードします。

`retry` を True に設定すると、ネットワーク エラーが発生した場合に自動的に再試行されます。

`delay` は再試行間の遅延秒数を設定します。

**kwargs は curl パラメータになります。例:

curl(url, FOLLOWLOCATION=False, USERAGENT='Firefox')

'''

ユーザーエージェントリスト = [

'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6',

'Mozilla/4.0 (互換; MSIE 7.0; Windows NT 5.1)',

'Mozilla/4.0 (互換; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)',

'Mozilla/4.0 (互換; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)',

'Opera/9.20 (Windows NT 6.0; U; en)',

'Mozilla/4.0 (互換; MSIE 5.0; Windows NT 5.1; .NET CLR 1.1.4322)',

'Opera/9.00 (Windows NT 5.1; U; en)',

'Mozilla/4.0 (互換; MSIE 6.0; Windows NT 5.1; en) Opera 8.50',

'Mozilla/4.0 (互換; MSIE 6.0; Windows NT 5.1; en) Opera 8.0',

'Mozilla/4.0 (互換; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]',

'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1',

]

サイズ = len(useragent_list)

ユーザーエージェント = useragent_list[random.randint(0, size-1)]

s = StringIO.StringIO()

c = カール()

c.setopt(NOSIGNAL, True)

c.setopt(FOLLOWLOCATION、True)

c.setopt(MAXREDIRS, 5)

c.setopt(タイムアウト、120)

kwargs のキーの場合:

c.setopt(locals()[キー], kwargs[キー])

c.setopt(URL, URL) を設定します。

c.setopt(WRITEFUNCTION、s.write) 関数は、

'USERAGENT' が kwargs にない場合:

c.setopt(ユーザーエージェント、ユーザーエージェント)

'REFERER' が kwargs にない場合:

c.setopt(リファラー、URL)

一方1:

試す:

c.実行()

壊す

を除外する:

再試行する場合:

時間.スリープ(遅延)

それ以外:

Falseを返す

s.getvalue() を返す

簡易収集に必要なダウンロード機能がこのモジュールに統合されました。ユーザーエージェントのローテーション、自動 301/302 リダイレクト、現在の URL を REFERER として使用する巧妙な方法などです。このモジュールのコードは後でゆっくり理解できますが、今は使い方を知っておく必要があります。

まず、Python スクリプトが配置されているディレクトリに移動し、前のコードを curl.py として保存し、同じディレクトリに新しいファイルを作成して、次のテスト コードを入力します。

# -*- コーディング:utf-8 -*-

インポートカール

print curl.curl('http://g.cn/') #これでWebページがダウンロードされます

#以下はより安全なダウンロード方法です。さまざまな理由により、一般的に安定している Web サイトでも、Web ページを開けない場合があります。

#Web ページのダウンロード エラーが発生した場合、retry が True であれば、Web ページがダウンロードされるまで再試行を続けます。

#delayは再試行間の時間間隔を秒単位で指定します

curl.curl('http://g.cn/', retry=True, delay=1) を印刷します。

#以下ではいくつかの Curl パラメータを使用します。詳細な説明は http://curl.haxx.se/libcurl/c/curl_easy_setopt.html を参照してください。

curl.curl('http://g.cn/', FOLLOWLOCATION=False, COOKIE='mycookie') を印刷します。

原題: ウェブサイトのキーワードランキングの完全自動監視(Python 実装)

キーワード: 完全自動、動的監視、ウェブサイトの制御、キー、単語ランキング、Python、実装、この記事、ウェブマスター、ウェブサイト、ウェブサイトのプロモーション、収益化

<<:  SEO最適化に別れを告げ、フォーラムを使ってウェブサイトを宣伝しましょう

>>:  プライベートソーシャルネットワークPathがさらに4000万ドルの資金調達を実施

推薦する

分散型電流制限、知りたいことはすべてここにあります

序文同時実行性の高いシステムでは、フローを制御することが非常に重要です。大量のトラフィックが直接サー...

SEO を最適化するにはどうすればよいでしょうか?

ウェブサイトの最適化の核心はキーワードですが、ホームページ、ディレクトリページ、コンテンツページのタ...

ラック「言葉では言い表せない」e: 安価なロシアの独立サーバー、および kvm+vmware シリーズ VPS

ロシアのサーバーが必要な場合は、ラックをご覧ください。モスクワ データ センターの独立サーバーは現在...

クラウドエンジニアとクラウドアーキテクトが不可欠な理由

あなたはクラウド アーキテクトですか、クラウド エンジニアですか、それともどちらでもありませんか?こ...

#台湾サーバー# serverfield-$169/E5-2407/16g メモリ/250g SSD/無制限トラフィック

serverfield は 2009 年に設立された台湾の会社 (登録番号: 66607099) で...

SEO専門家は皆人民元によって追い出される

みなさんこんにちは。私はShi Touです。 SEO エキスパートになる方法に関する記事をオンライン...

過小評価できないロングテールの力は、大量のトラフィックを生み出すサイトを作る

最近、小学校の作文についての記事を企画していたのですが、自分より優れた人は必ずいるのだということに気...

クラウド移行と管理コストが軌道から外れるさまざまな方法

クラウド コンピューティングは、企業のビジネスのやり方を変える機会を提供します。クラウドを導入するこ...

Xinnet の抜け穴により Qianzhan.com ドメイン名が盗まれ、トップレベルドメイン名プロバイダーは責任を転嫁

Xinnet の抜け穴により Qianzhan.com ドメイン名が盗まれ、トップレベルドメイン名プ...

コンテンツを活用して権威あるウェブサイトを構築する方法

「コンテンツは王、外部リンクは女王」はSEO界の法則ですが、どうすれば高品質で効率的なオリジナル記事...

インターネットオンラインチャンネル運営実施計画!

第1節 実施計画・運営部1. 中核となる運営理念: 1. オンラインチャネル運用+販売システムの構築...

海外プロモーションに欠かせない、グローバル広告チャネルとは?

3月20日、AppsFlyerは「第8回広告プラットフォーム総合パフォーマンスレポート(2018年下...

#クリスマス# ターンキーインターネット -$11.99/KVM/4G メモリ/4 コア/40gSSD/Windows 互換/1Gbps 無制限トラフィック

turnkeyinternet は、クリスマス + 新年プロモーションを提供しています。割引コードH...

インターネット起業における両者の相互作用について

最近、Tianya の投稿をフォローしています。約 2,000 ページの長さですが、まだ終わっていま...

クラウドネイティブ Docker デプロイメント Flask 実践

1. Dockerの理解1. Dockerの簡単な紹介Docker はオープンソースのアプリケーシ...