3

Ruby on Rails でWeb ページのリンクを共有できる共有サイトを構築しています。

各ページの代表的な画像をいくつか抽出したいと思います (リンクを共有するときのFacebookのように)。

今のところ、最初にgem opengraphog:imageを使用してメタ タグを解析し、次にNokogiriを使用してページ コンテンツを解析し、すべての<img>タグsrc属性を取得します。これにより、良い結果が得られます(一部の装飾画像を除くため、サイズで結果をフィルタリングします...)。

--

次に、さらに進んで css プロパティを解析したいと思います。Webbackground-imageサイトのロゴは、<h1>または<a>タグの背景として表示されることがよくあります。

次のプロセスを考えています。

  • HTMLドキュメントを正規表現(のようなもの/background(-image)?:.../)で解析して、インラインCSSを見つけます

  • Nokogiri で CSS スタイルシートの URL を取得し、これらのシートを同じ正規表現で解析する

...そして、ドキュメントの URL に従って URL を絶対化します。

--

私の質問は次のとおりです。

  • より良い代替手段があると思いますか?

  • プロセスのパフォーマンスを向上させるライブラリはありますか?

    たとえば、DOM を介して CSS プロパティにアクセスできる HTML+CSS の統合ビューを構築できれば、事前に選択された HTML 要素 (h1、a、...) の背景画像のみにアクセスでき、結果の数を制限します。

4

1 に答える 1

1

Web サイトの CSS を解析すると、返される画像はすべて、ページの実際のコンテンツではなく、ユーザー インターフェイス (スプライト、背景) に関連しています。

単にロゴを抽出しようとしているのでない限り、それを行う価値はないと思います。その場合、「ロゴ」という単語を含むクラス名/ID/パスの一致に制限します。

ページから「代表的な画像」を抽出したい場合は、あなたが行っているように画像タグを解析してから、次のようにページのスクリーンショットを生成 (およびトリミング) します。ユニックスサーバー?

生の HTML ソースにない画像をどのように処理していますか?

ライブラリに関しては、nokogiri が最も優れていると確信しています。

于 2012-04-20T13:49:06.367 に答える