この記事はAhrefs公式ブログの日本語訳です。
原文:6 Actionable Web Scraping Hacks for White Hat Marketers
(著者:Joshua Hardwick / 原文の最終更新日:October 17, 2017)
※フルスピード註:この記事は2017年10月17日時点の記載をもとに翻訳しています。Ahrefs公式ブログの記事は今後追記・再公開されることがありますことをご了承ください。
Screaming Frogのようなプログラムを使用して、 大量の Web ページからメタデータ (タイトル/説明など) を一括抽出したことがありますか?
もしそうなら、あなたはすでに Web スクレイピングに精通しています。
しかし、これは確かに便利ですが、Web スクレイピングにはいくつかのタイトル タグを取得するだけではありません。実際にこれを使用すると、あらゆるWeb ページ からあらゆるデータを 数秒で抽出できます。
問題は、どのような データを抽出する必要があるのか、そしてその理由は何かということです。
この投稿では、6 つの Web スクレイピング ハックを紹介することで、これらの質問に答えることを目指します。
- Web サイトのコメントからコンテンツの「エバンジェリスト」を見つける方法
- 「専門家によるラウンドアップ」から見込み客のデータを収集する方法
- ジャンクな「ゲスト投稿」見込み客を削除する方法
- ブログカテゴリのパフォーマンスを分析する方法
- Reddit に適したコンテンツを選択する方法
- コンテンツを愛する人々との関係を築く方法
また、Web スクレイピングを初めて使用する人にとって困難を軽減するために、可能な限り多くのプロセスを自動化しました。
その前に、Web スクレイピングとその仕組みについてもう少し詳しく説明しましょう。
- Webスクレイピングの基本的な紹介
- 1. 既存の Web サイトのコメントをスクレイピングして、新しいコンテンツを読むことに興味がありそうな「エバンジェリスト」を見つけます
- 2. 既存の「専門家まとめ」を収集して、あなたの投稿に貢献してくれる人を見つける
- 3. RSS フィードをスクレイピングしてジャンクな「ゲスト投稿」見込み客を削除する
- 4. 投稿カテゴリーをスクレイピングして、ブログで最もパフォーマンスが高いコンテンツのタイプを見つけます
- 5. Reddit 上で適切な種類のコンテンツのみを宣伝する (すでに成果が上がっているコンテンツに注目して)
- 6. すでにコンテンツのファンである人々と関係を築く
- まとめ
Webスクレイピングの基本的な紹介
競合他社の最新の 50 件のブログ投稿からタイトルを抽出すると仮定します。
各 Web サイトに個別にアクセスし、HTML をチェックし、タイトル タグを見つけて、そのデータを必要な場所 (スプレッドシートなど) にコピー/ペーストできます。
しかし、これでは非常に 時間がかかり、退屈になります。
そのため、コンピューター アプリケーション (Web スクレイパー) を使用して必要なデータをスクレイピングする方がはるかに簡単です。
一般に、探しているデータを「スクレイピング」するには 2 つの方法があります。
- パスベースのシステム (XPath/CSS セレクターなど) を使用します。
- 検索パターン (例: Regex) の使用
XPath/CSS (つまり、パスベースのシステム) は、ほとんどの種類のデータを収集する最良の方法です。
たとえば、このドキュメントからh1 タグをスクレイピングするとします。
h1がbodyタグ 内にネストされており、このタグがhtmlタグの下にネストされていることがわかります 。これを XPath/CSS として記述する方法は次のとおりです。
- XPath: /html/body/h1
- CSS セレクター: html > body > h1
サイドノート。ドキュメントには h1 タグが 1 つしかないため、実際にはフルパスを指定する必要はありません。代わりに、XPath の場合は「//h1」、CSS の場合は単純に「h1」を使用して、ドキュメント全体の h1 のすべてのインスタンスを検索するようにスクレイパーに指示するだけです。
しかし、代わりにフルーツのリストをスクレイピングしたい場合はどうなるでしょうか?
//ul/li (XPath)、またはul > li (CSS)のようなものだと推測できますよ ね?
確かに、これはうまくいくでしょう。しかし、実際にはドキュメント内に 2 つの順序なしリスト (ul) があるため、これにより、フルーツのリストと 2 番目のリスト内のすべてのリスト項目の両方がスクレイピングされます。
ただし、ul のクラスを参照して 、必要なものだけを取得することもできます。
- XPath: //ul[@class=’fruit’]/li
- CSS セレクター: ul.fruit > li
一方、正規表現は、パスではなく検索パターンを使用して、 ドキュメント内の一致するすべてのインスタンスを検索します。
これは、パスベースの検索では解決できない場合に便利です。
たとえば、文書内の他の順序なしリストから「first」、「first」、「first」、「thirth」という単語をスクレイピングするとします。
パスベースのクエリを使用してこれらの単語だけを取得する方法はありません が、次の正規表現パターンを使用して必要なものと一致させることができます。
<li>これはリスト内の (.*) 項目です</\/li>
これは、文書内で「これはリスト内の [ANY WORD] 項目です」を含むリスト項目 ( li )を検索し、 その語句から [ANY WORD]のみを抽出します。サイドノート。正規表現は HTML/XML ファイルの構造化された性質を使用しないため、多くの場合、結果は CSS/XPath よりも正確ではありません。XPath/CSS が実行可能なオプションではない場合にのみ Regex を使用してください。
以下に、いくつかの便利な XPath/CSS/Regex リソースを示します。
- Regexr.com — Regex を学習、構築、テストします。
- W3Schools XPath チュートリアル;
スクレイピングツール:
OK、Web スクレイピングのハックをいくつか始めましょう!
1. 既存の Web サイトのコメントをスクレイピングして、新しいコンテンツを読むことに興味がありそうな「エバンジェリスト」を見つけます
WordPress ブログにコメントする人のほとんどは、自分の名前と Web サイトを使用してコメントします。
これらはハイパーリンクされたコメントであるため、どのコメント セクションでも見つけることができます。
しかし、これは何の役に立つのでしょうか?
さて、X に関する投稿を公開したばかりで、それを読むことに興味がある人を探していると仮定しましょう。
それらを見つける簡単な方法は次のとおりです (少しスクレイピングが必要です)。
- Web サイトで同様の投稿を見つけます (たとえば、新しい投稿がリンク構築に関するものである場合は、SEO/リンク構築について書いた以前の投稿を探します。ただし、適切な量のコメントがあることを確認してください)。
- すべてのコメント投稿者の名前とウェブサイトをスクレイピングします。
- 新しいコンテンツについて連絡して伝えてください。
サイドノート。これは、これらの人々が (a) あなたの作品の既存のファンであり、(b) そのトピックに関するあなたの以前の投稿の 1 つがとても気に入ってコメントを残しているため、これがうまく機能します。したがって、これはまだ「冷たい」ピッチングですが、見知らぬ人に直接ピッチングする場合に比べて、彼らがあなたのコンテンツに興味を持ってくれる可能性ははるかに高くなります。
それらをスクレイピングする方法は次のとおりです。
コメントセクションに移動し、トップレベルのコメントを右クリックして「類似したものをスクレイピング…」を選択します (注: これを行うには、 Scraper Chrome 拡張機能をインストールする必要があります )。
これにより、コメント投稿者の名前とウェブサイトのきちんとしたリストが表示されるはずです。
この Google スプレッドシートのコピーを作成し、[クリップボードにコピー] をクリックして、[1. クリップボードにコピー] というラベルの付いたタブに貼り付けます。ここから始める”。
サイドノート。コメントが複数ページある場合は、各ページに対してこのプロセスを繰り返す必要があります。
「2.」というラベルの付いたタブに移動します。名前 + ウェブサイト」を検索し、Google スプレッドシートのhunter.io アドオンを使用して 、見込み客のメール アドレスを見つけます。
サイドノート。Hunter.io はすべての見込み客に成功するわけではないため、
電子メール アドレスを見つけるためのより実用的な方法を次に示します。
その後、これらの人々に連絡して、新しい/更新された投稿について伝えることができます。
重要:この戦略には細心の 注意を払うことをお勧めします。これらの人々はコメントを残している可能性がありますが、 あなたのメール リストにオプトインしていないことに注意してください。それにはさまざまな理由が考えられますが、おそらく彼らはこの投稿だけに本当に興味を持っていたのでしょう。したがって、この戦略は、投稿の更新や同様の他の新しい投稿についてコメント投稿者に通知する場合にのみ使用することをお勧めします。言い換えれば、相手が気にする可能性の低い内容についてメールを送信しないでください。
2. 既存の「専門家まとめ」を収集して、あなたの投稿に貢献してくれる人を見つける
「専門家」による総まとめはやりすぎだ。
ただし、これは、コンテンツ内に知識のある業界人からのアドバイス、洞察、引用を含めることが悪い考えであるという意味ではありません。 多くの価値を加えることができます。
実際、私たちは最近の SEO 学習ガイドでまさにこれを実行しました。
ただし、連絡したい「専門家」を見つけるのは簡単ですが、誰もがそのような要求に積極的に応じるわけではないことを覚えておくことが重要です。忙しすぎる人もいれば、あらゆる形態の「冷たい」支援を単に軽蔑する人もいます。
したがって、あなたの今後の投稿に引用/意見などを提供することに誰が興味を持ちそうなのかを推測するのではなく、次の方法でそのようなリクエストに積極的に対応した実績のある人に連絡してみましょう。
- あなたの業界の既存の「専門家まとめ」(または「専門家」のアドバイス/意見などを含む投稿)を見つける。
- すべての投稿者の名前とウェブサイトをスクレイピングする。
- リクエストに応じる可能性が最も高い人のリストを作成します。
Nikolay Stoyanov による専門家のまとめ記事を読んで試してみましょう。
まず、スクレイピングしたいデータの構造/形式を理解する必要があります。この例では、フルネーム の後にハイパーリンクされたWeb サイトが続いているように見えます。
HTML 的には、これはすべて<strong> タグで囲まれています。
サイドノート。Chrome で右クリックして [検査] をクリックすると、ページ上の HTML 要素を検査できます。
この<strong> タグ内には名前 (テキスト) と Web サイト (リンク) の両方が必要なので、 Scraper 拡張機能 を使用して「text()」と「a/@href」をスクレイピングします。 XPath は次のようになります。
(上記のように) データが多少乱雑でも心配する必要はありません。これはすぐに自動的にクリーンアップされます。サイドノート。XPath 構文に慣れていない人には、
このチートシートを使用することをお勧めします。 基本的な HTML の知識があると仮定すると、 Web ページから必要な
データを抽出する方法を理解するにはこれで十分です。
次に、この Google スプレッドシートのコピーを作成し、[クリップボードにコピー] をクリックして、生データを最初のタブ (つまり、[1. ここから開始]) に貼り付けます。
必要な数のまとめ投稿に対してこのプロセスを繰り返します。
最後に、Google スプレッドシートの 2 番目のタブ (つまり、「2. 名前 + ドメイン」) に移動すると、出現回数順に並べられたすべての投稿者のきちんとしたリストが表示されます。
リストにある全員の電子メール アドレスを見つける 9 つの方法を次に示します 。
重要: 質問やリクエストをする前に、必ず見込み客について調べてください。また、スパムメールを送信しないでください。
3. RSS フィードをスクレイピングしてジャンクな「ゲスト投稿」見込み客を削除する
しばらく何も公開していないブログは、ゲスト投稿の売り込みに応じる可能性は低いです。
なぜ?なぜなら、ブロガーはおそらく 自分のブログに興味を失っているからです。
そのため、私は 投稿する前に、最新のいくつかの投稿の公開日を常にチェックしています。
(数週間以上投稿がない場合は、わざわざ連絡する必要はありません)
ただし、スクレイピングに関する少しのノウハウを使えば、このプロセスを自動化できます。その方法は次のとおりです。
- ブログの RSS フィードを見つけます。
- フィードから「pubDate 」をスクレイピング
ほとんどのブログの RSS フィードは、 domain.com/feed/で見つけることができます。これにより、URL に「/feed/」を追加するだけで、ブログのリストの RSS フィードを簡単に見つけることができます。
たとえば、Ahrefs ブログの RSS フィードは、https://ahrefs.com/blog/feed/で見つけることができます。サイドノート。これはすべてのブログで機能するわけではありません。ブロガーの中には、FeedBurner などの他のサービスを使用して RSS フィードを作成する人もいます。ただし、ほとんどの場合は機能します。
その後、Google スプレッドシートのIMPORTXML関数内で XPath を使用して、 pubDate要素 を取得できます 。
importxml(“ https://ahrefs.com/blog/feed/ ”,” //pubDate ”)))
これにより、RSS フィード内のすべてのpubDate要素がスクレイピングされ 、そのブログの最新の 5 ~ 10 件のブログ投稿の公開日のリストが得られます。
しかし、ブログのリスト全体に対してこれを行うにはどうすればよいでしょうか?
さて、このプロセスを自動化する別の Google スプレッドシートを作成しました 。ブログの URL のリスト (例: https://ahrefs.com/blog ) を最初のタブ (つまり、「1. ブログの URL を入力」) に貼り付けてください。 「結果」タブに次のようなものが表示されるはずです。
それは次のように教えてくれます:
- 最新の投稿の日付。
- それは何日/何週間/何ヶ月前でしたか。
- 投稿間の平均日数/週/月(つまり、平均の投稿頻度)
これは、ゲスト投稿の売り込み先を選択するのに非常に役立つ情報です。
たとえば、平均して 11 日ごとに新しい投稿を公開していることがわかります。これは、SEO/マーケティング業界にいる人にとって、Ahrefs は間違いなく売り込むのに最適なブログであることを意味します 🙂
推奨書籍: 2016 年のゲスト ブログの詳細 (ケーススタディ、データ、ヒント)
4. 投稿カテゴリーをスクレイピングして、ブログで最もパフォーマンスが高いコンテンツのタイプを見つけます
多くのブロガーは、視聴者の共感を呼ぶものを大体把握しているでしょう。
しかし、SEO/マーケティング担当者として、私は冷酷なデータに依存することを好みます。
ブログのコンテンツに関しては、データは次のようなすぐには明らかではない質問の答えに役立ちます。
- 一部のトピックは他のトピックよりも多く共有されますか?
- 他のトピックよりも多くのバックリンクを集める特定のトピックはありますか?
- 一部の作家は他の作家よりも人気がありますか?
このセクションでは、単一の Ahrefs エクスポートと単純なスクレイピングを組み合わせて、ブログでこれらの質問に答える方法を正確に説明します。次のような視覚的なデータ表現を自動生成することもできます。
プロセスは次のとおりです。
- Ahrefs Site Explorerから「トップ コンテンツ」レポートをエクスポートします。
- すべてのブログ投稿のカテゴリをスクレイピングします。
- Google スプレッドシートのデータを分析します (ヒント:これを自動的に行うテンプレートが含まれています !)
まず、Ahrefs からトップ ページ レポートを取得する必要があります。例として ahrefs.com/blog を使用しましょう。
サイト エクスプローラー > ahrefs.com/blog と入力 > ページ > トップ コンテンツ > .csv としてエクスポート
サイドノート。このために 1,000 行を超える行をエクスポートしないでください。このスプレッドシートでは機能しません。
次に、この Google シートのコピーを作成し 、トップ コンテンツ .csv エクスポートからのすべてのデータを最初のタブのセル A1 に貼り付けます (つまり、「1. Ahrefs エクスポート」)。
さあ、スクレイピングです…
[コンテンツ URL] 列からいずれかの URL を開き、投稿が公開されたカテゴリを見つけます。
次に、この HTML 要素の XPath を確認する必要があるため、右クリックして [検査] をクリックして HTML を表示します。
この例では、投稿カテゴリが、クラス「post-category」を持つ <div> 内に含まれており、<header> タグ内にネストされていることがわかります。つまり、XPath は次のようになります。
//header/div[@class=’ポストカテゴリー’]
これで、Screaming Frog を使用して 各投稿の投稿カテゴリーをスクレイピングできるようになりました。その方法は次のとおりです。
- Screaming Frog を開き、「モード」>「リスト」に移動します。
- 「構成」 > 「スパイダー」に移動し 、すべてのボックスのチェックを外します (このように)。
- 「構成」>「カスタム」>「抽出」>「抽出 1」に移動し、XPath (例: //header/div[@class=’post-category’]) を貼り付けます。スクレイパーモードとして「XPath」を選択し、抽出モードとして「テキストの抽出」を選択していることを確認してください(このように)
- コンテンツ URL からすべての URL をコピーして Screaming Frog に貼り付け、スクレイピングを開始します。
完了したら、「カスタム」タブに進み、「抽出」でフィルタリングすると、各 URL の抽出されたデータが表示されます。
「エクスポート」をクリックし、.csv 内のすべてのデータを Google シートの次のタブにコピーします (つまり、「2. SF 抽出」)。
Google シートの最後のタブ (つまり「結果」) に移動すると、大量のデータと付随するグラフが表示されます。
サイドノート。このプロセスで実用的な洞察を得るには、ブログ投稿が適切に分類されていることが重要です。Ahrefs での分類には追加の作業が必要であると言っても過言ではないので、上記の結果は割り引いて受け止めてください。
5. Reddit 上で適切な種類のコンテンツのみを宣伝する (すでに成果が上がっているコンテンツに注目して)
Redditorは自己宣伝を軽蔑します。
実際、プラットフォームを介して自己宣伝しようとする怠惰な試みは、通常 、嘲笑と汚い言葉の集中砲火に遭遇します。
しかし、問題は次のとおりです。
Redditor は、 あなたが何かを共有することに何も反対しません。それが彼らが本当に気にかけているものであることを確認する必要があるだけです 。
これを行うための最良の方法は、彼らが過去に好きだったものを収集 (そして分析) し、そのタイプのコンテンツをさらに共有することです。
プロセスは次のとおりです。
- サブレディット (例: /r/Entrepreneur) を選択します。
- 史上上位 1,000 件の投稿をかき集めます。
- データを分析し、それに応じて行動します (そう、これを行うための Google スプレッドシートが含まれています!)
OK、まず最初に、この Google シートのコピーを作成し 、分析したいサブレディットを入力します。次に、サブレディットのトップ投稿への書式設定されたリンクがその横に表示されるはずです。
これにより、そのサブレディットのこれまでの投稿の上位 25 件を表示するページが表示されます。
ただし、このページには上位 25 件の投稿のみが表示されます。上位 1,000 件を分析するので、スクレイピング ツールを使用して複数ページの結果をスクレイピングする必要があります。
Reddit ではこれを実際にはかなり困難にしていますが、Import.io (毎月 500 クエリまでは無料で十分です) を使用するとこれを簡単に実行できます。
これらのページから収集する内容は次のとおりです (ヒント: 各データ ポイントの例を表示するには、リンクをクリックしてください)。
- ランク;
- スコア/賛成票;
- タイトル;
- ユーザーは;によって送信されました。
- コメント;
- リンクフレア (これはすべてのサブレディットで利用できるわけではないためオプションです。また、一部のサブレディットでは他のサブレディットよりも明白です。詳細はこちらをご覧ください)
OK、例として /r/Entrepreneur にこだわりましょう…
Import.io に移動 > サインアップ > 新しいエクストラクター > Google Sheet からのリンクを貼り付けます (上を参照)
「実行」をクリックします。
Import.io が魔法を働き、ページから大量のデータを抽出します。サイドノート。無意味なデータが抽出される場合があるため、「編集」タブ内で不要な列を削除することをお勧めします。上記のデータを正しい順序に保つことを忘れないでください。
「保存」をクリックします(ただし、まだ実行しないでください)。
現時点では、エクストラクターは上位 25 件の投稿のみをスクレイピングするように設定されています。残りをスクレイピングするには、(Google シートの「2. その他のリンク」というラベルの付いたタブから)他の URL を追加する必要があります。
これらを抽出ツールの「設定」タブに追加します。
「URL を保存」をクリックし、エクストラクターを実行します。
完了したら、.csv をダウンロードします。
すべてのデータを .csv から「3.」というラベルの付いたシートにコピー/貼り付けます。IMPORT.IO EXPORT」をスプレッドシートに入力します。
最後に、「結果」シートに移動してキーワードを入力します。そうすると、そのサブレディットがあなたのトピックにどれだけ興味を持っているかを示す、きちんとした統計が表示されます。
6. すでにコンテンツのファンである人々と関係を築く
ほとんどのツイートはあなたのウェブサイトへのトラフィックをゼロにします。
だからこそ、誰にでも「ツイートを懇願する」のはひどい考えなのです。
ただし、すべてのツイートに価値がないというわけではありません。Web サイトに実際のトラフィック を送信する可能性がある人々に連絡することには依然として価値があります 。
これを行うためのワークフローは次のとおりです (注: Twitter のスクレイピングが少し含まれています)。
- すべての Twitter メンションをスクレイピングしてスプレッドシートに追加します (IFTTT を使用)。
- あなたのコンテンツをたくさんシェアしてくれた人のフォロワー数を集めましょう。
- 連絡先の詳細を見つけて、これらの人々と連絡を取り、関係を構築します。
それでは、まず、この Google スプレッドシートのコピーを作成します。
重要: これのコピーを Google ドライブのルート (つまり、サブフォルダーではない) に作成する必要があります。また、正確に「My Twitter Mentions」という名前を付ける必要があります。
次に、 IFTTT アカウント内でこのレシピ をオンにします (これを行うには、Twitter + Google Drive アカウントを IFTTT に接続する必要があります)。
このレシピは何をするのですか? 基本的に、Twitter で誰かがあなたに言及するたびに、次の情報が収集され、スプレッドシートの新しい行に追加されます。
- (あなたに言及した人の) Twitter ハンドル。
- 彼らのツイート。
- ツイートリンク;
- ツイートした日時
スプレッドシートの 2 番目のシート (つまり、「1.ツイート」というラベルが付いているシート) に移動すると、あなたに言及し、あなたのリンクを最も多くツイートした人が表示されます。
ただし、彼らがあなたのことを何度も言及したという事実は、必ずしも彼らがあなたのウェブサイトに実際の トラフィックを誘導することを示すわけではありません。
そこで、各人が持つフォロワーの数を収集したいと考えます。
これは、Screaming Frog を使用する CSS セレクターで行うことができます。
検索の深さを「0」に設定し(ここを参照)、カスタム抽出で次の設定を使用します。
各 CSS セレクターは次のとおりです (明確にするため)。
- ツイッター名: h1
- Twitter ハンドル: h2 > a > span > b
- フォロワー: li.ProfileNav-item.ProfileNav-item–followers > a > scan.ProfileNav-value
- ウェブサイト: div.ProfileHeaderCard > div.ProfileHeaderCard-url >span.ProfileHeaderCard-urlText.u-dir > a
スプレッドシートからすべての Twitter リンクをコピーして Screaming Frog に貼り付け、実行します。
完了したら、次の場所に移動します。
カスタム > 抽出 > エクスポート
エクスポートされた .csv を開き、すべてのデータをシート内の次のタブ (つまり、「2. SF エクスポート」というラベルが付いているタブ) にコピー/貼り付けます。
最後に、最後のタブ (つまり、「3. 結果」) に移動すると、あなたに言及した全員のリストと、次のようなその他の情報が表示されます。
- 彼らがあなたについてツイートした回数、
- フォロワー数
- ウェブサイト (該当する場合)
これらの人々は過去にあなたのコンテンツをすでに共有しており、多くのフォロワーを抱えているため、連絡を取り、関係を構築する価値があります。
まとめ
Webスクレイピングは非常に 強力です。
必要なのは、基本的な XPath/CSS/Regex の知識 (もちろん、Web スクレイピング ツールと併せて) だけで、 ほんの数秒であらゆるWeb サイト からあらゆるものをスクレイピングすることが可能です。
私は、学習するための最良の方法は を実行することであると強く信じています。そのため、時間をかけて上記の実験を再現することを強くお勧めします。これは、将来的に Web スクレイピングで簡単に自動化できる可能性があるものに注意を払うことも教えてくれます。
したがって、上記のツールやアイデアを試してみて、思いついたことを下のコメントセクションで教えてください 🙂
著者プロフィール
Joshua Hardwick
コンテンツ責任者 @ Ahrefs (平たく言えば、私は私たちが公開するすべてのブログ投稿が EPIC であることを保証する責任を負っています)。
コメント