Initial Site

Initial Site

Initial Site

キュレーションサイトの作成の考え方!WEB屋のメモ帳

  • ヤスダ  2015/08/31 13:26
140922_eyecatch

こんにちは。

キュレーションサイトの作成の考え方。
WEB屋の保田です。

ページの説明文(メインコンテンツ)の引用の仕方

■ディスクリプションを抜き出す
メリット

・比較的簡単に抜き出すことができる

デメリット

・ディスクリプションが動的に作られていた場合、機械的な文になってしまう可能性がある。
・最近はあまり記述する必要がないとも言われているディスクリプションなので存在しない場合も多い。

■検索エンジンを使う

googleはなぜか、検索結果を取得できないのでyahooで対象のURLを検索して、ヒットした文章を使用する。

メリット

・比較的簡単に抜き出すことができる

デメリット

・yahooへのアクセスが増える。スパム判断されると困る。(別サーバーでやれば問題ないけど。)
・途中で文章が省略されてしまったりするので、引用文が文章として成り立たない。

■オープンソース「unfluff」

https://github.com/ageitgey/node-unfluff
URLを渡すだけで、JSONが返ってるくようです。基本的にはメタタグと、メインコンテンツとおぼしき部分の取得になります。descriptionとはまた違ったテキストが得られます。

デメリット

・日本語が苦手。

■本文から

かなり難しいアルゴリズムが必要となります。調整が必要だと思いますが、今考えられる取得方法。

□メインコンテンツの取得

・対象のページ(ページA)をスクレイピング。
・次にそのサイトの他の記事ページ(ページB)もスクレイピング。
・ページAとページBの差分をとって、違う部分の塊をメインコンテンツと考える。

□メインコンテンツを集約する。まとめる。

・タイトルを形態素解析をする。
・形態素解析の結果に含まれた名詞のみを取得。
・その名詞で、固有名詞もしくは、辞書にヒットするもののみを取得。
・メインコンテンツの中でその文字を含む文章を抜き出す。
・複合率が高かった文章から前後1文ぐらいをピックアップ。

この方法でだいたいまとめられると思いますが、WEBサイトはいろんな形で作成されているので、例外なく取得できるということはないと思います。上の方法を複合で使うのがいい方法だと感じています。

メイン画像の取得

■WEBサイトのキャプチャ、サムネイル

サーバー上でブラウザを起動すれば、サイト全体のサムネイル画像を取得できるはずです。

デメリット

・同じサイト全体のサムネイル画像を表示するとだいたい似たような画像になってしまう。

■ヘッダー画像の取得

どこから引用したかを見やすくするためにも、ロゴやヘッダー画像の取得は必要です。人間の目でみれば、どれがロゴなのかは一目瞭然なのですが、スクレイピングとなるとそういうわけにはいきません。また、背景画像にてロゴが設定されていた場合は、CSSまで読み込まなくてはいけないということも忘れてはいけません。

□一番上にある画像を取得する。

・ロゴの前に広告ヘッダー画像が存在した場合は、広告を拾ってしまう。

□差分を見つけて、重複する画像のピックアップ。

・対象のページ以外にも複数のページのスクレイピングをして、必ず現れる画像を配列で取得。

□モバイルページから取得。

・モバイルページなら一番上部にある画像はロゴと考えて良いかもしれません。

上部の方法以外に、画像サイズにあたりをつけておくと、変な画像を取得しなくて済むかもしれません。

■メイン画像
□OpenGraphのog:image

・メタタグに埋め込まれているOpenGraphのog:imageの画像を使用する。

□差分を見つけて、重複しない画像の取得。

・対象のページ以外にも複数のページのスクレイピングをして、重複しない画像でメインコンテンツにある画像を取得。
・複数取得してしまったら、画像で最もサイズの大きいものを選択。

オープンソース

■unfluff

メインコンテンツを取得するオープンソースです。

外部のWebサイトを集約してタイトルとメインコンテンツを取得します。
nodeで作られたunfluffは、基本的にはメタタグと、メインコンテンツと思われる部分の取得してJSONで返ってきます。
descriptionとは違ったテキストが得られるのが魅力です。

■Iframely

外部コンテンツを埋め込むためのJSON生成。

特徴としては、
・写真を埋め込み。
・アイコンやサムネイルを埋め込み。
・Vimeo。動画の再生も可能です。
・SoundCloud。音楽の再生も可能です。
・Twitterカードに送る際のデータ確認。

■Boilerplate

Java

■JavaScriptで本文抽出「ExtractContentJS」

JavaScript

■HTMLから本文抽出「Extractcontent」

Ruby

■タイトル・本文抽出クローラー「Webstemmer」

Python

(´・ω・`)…….PHPは、ないみたい。
(´・ω・`)PHPしか書けないWEB屋はコツコツ自分で作るしかないか。

次回もWEB関連の記事を書く予定です。

WEB屋の保田でした。


コメントをどうぞ

技術の記事

  1. 2
    photoshopで簡単な加工からそれなりに綺麗にする方法
  2. pixta_4153512_M
    夏バテ気味のようです。
  3. CropperCapture1
    【ターゲットブランク】target=_blankなのか。target=blankなのか。それとも、target=newなのか。WEB屋のメモ帳
  4. lgi01a201404292200
    プログラマは稼げるのか?

おすすめ記事

  1. ジョブズ4
    人生の点と点をつなげて線にする『自分史』。
  2. スギ花粉
    鼻がムズムズ目がカユカユな花粉症についてまとめてみた
  3. 『テレビ観ないんだよね…』と言うのがかっこいいと思っている人に告ぐ!
  4. 出典:無料壁紙:格闘技がテーマの写真やイラスト画像まとめ(格闘家・ブルースリー)
    ブルース・リーの出身地ってどこだかわかりますか?
  5. 月額課金地獄
    ネットサービスの月額課金地獄沼にハマる方法
  6. ハイビスカス
    ウチナーンチュが沖縄に帰った時に必ず行くお店10選+α
  7. イニシャルサイトコーポレートサイト
    コーポレートサイトをリニューアルしました
  8. なんでもQ
    相談Q&Aサイト「なんでもQ」開発中です!
  9. さんぽすフォトコンペ開催中
    今年もさんぽすフォトコンペ開催しました!

人気の記事

  1. ファミコン
    パズドラ、モンスト、白猫に続く次のゲームは…?
  2. konagaya_20150303
    日常でつい使ってしまう間違えやすい日本語
  3. konagaya20150513
    初心者でも気軽に登れて絶景が見れる山
  4. クロックスの偽物と本物の違い
    クロックスの本物と偽物の違いを比べてみました