ウェブサイトのキーワードランキングの完全自動監視(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万ドルの資金調達を実施

推薦する

グリーンクラウドコンピューティングとは何ですか?シークレットガイド

テクノロジー業界は近年変革を遂げており、持続可能性が中心的なテーマとなっています。世界が気候変動、天...

ultravps: 大容量ハードディスク VPS (ZFS)、KVM、2T ハードディスク、60 ユーロ/半年

ultravpsは、ドイツのデータセンターがストレージVPS(大容量ハードドライブVPS)の販売を開...

アウトソースした企業ウェブサイトに記事編集の経験しかない場合のSEOの実施方法

私は現在、長沙にある企業経営研修会社のネットワーク部門で働いています。 1ヶ月と9日間服役しました。...

IBM: ハイブリッドクラウドと AI を活用して企業のデジタル変革を実現

雲南白薬は、国内外で有名な伝統的な中国ブランドです。雲南白薬グループは、中国の近代企業発展の歴史にお...

レポート: モバイル トラフィックの増加により Google 有料クリック数が減少

北京時間10月22日、Adobeは最新の第3四半期インターネット広告データレポートで、モバイルトラフ...

Baidu の発表に疑問:Baidu が公開したアルゴリズムはどの程度真実なのか?

みなさんこんにちは。私はMuzi Chengzhouです。 SEO を行う際、SEO をうまく行うに...

アリババクラウドはタイのTrue IDCや日本のJP GAMESなど海外企業30社近くと提携

アリババクラウドは9月22日、タイ・プーケットで開催されたアリババクラウド国際サミットで、タイのTr...

IIS7/IIS7.5 セカンダリドメイン擬似静的設定方法

必要に応じて、IIS7.5 で疑似静的セカンダリ ドメイン名を設定する方法を探していましたが、見つか...

TIC 2018では、独立系インターネット企業の発展の道筋について熱く議論され、独立性と制御性を備えた技術力が実証された。

「実は、インターネット分野に限らず、グローバルビジネスの歴史においても、基本的には巨大なエコシステム...

クラウドコンピューティングの基本ガイド

2021 年までに、コンピューティング インスタンスとワークロードの 90% 以上がクラウド データ...

レジストリ: 分散システムへの対応方法

サービス検出の概念は、実際には私たちのプロジェクトで長い間使用されてきましたが、あまり注目されていな...

優れたSEO実践者の良い習慣

SEO に触れたことがあれば、SEO は毎日の定期的な作業であることがお分かりでしょう。したがって、...

ウェブサイト分析ハック集: JavaScript ドキュメント オブジェクト モデル

この記事は、Web 分析の第一人者である Eric T. Peterson 氏の著書「Web Sit...