

### 前提・実現したいこと

ユーザが投稿したURLからテキストと画像を取得したいです。  
(Twitterの投稿画面でurlを貼り付けるとurl先のプレビュー表示がされるような機能です。)  
またテキスト・画像の取得をiOSで実装するのかRailsなどサーバーサイトで実装したほうがいいかなどもわかっておりません。

### 調査したことして実装方法を考えてみました。

①WebViewで表示  
string imageviewとして取得できない。

②URL先のHTMLをパースしてテキスト・urlを取得  
=>  
タグの書き方が無数にあるので取得することが難しい。

③URL先からRSSのurl情報を取得してXMLをパースする。  
=>  
1.RSSからurlを取得する（数パターン用意: RSS RSS2.0 Atom など）  
2.xmelをパースする。

### アドバイスいただきたいこと。

上記の③の方法なら実現できるかなっと考えているのですが、③でもRSSの情報が定義されたURLのみしかテキストと画像が取得できません。

TwitterやほかのサービスでもURLからテキストと画像を取得している機能を見るのですが、どのように実装しているのでしょうか。

アドバイスいただきたいです。


CC BY-SA 3.0
2016-12-19T00:38:29.363
31227
2017-03-02T04:09:50.103
12807
question
swift ruby-on-rails objective-c
URLから画像やテキストを取得


サーバサイドで実行する方法を示します。

Twitterが取得する画像はmeta情報として指定できます。

[code]

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="シェアするタイトル" />
    <meta name="twitter:description" content="シェアするページの説明" />
    <meta name="twitter:image" content="https://asset.example.com/images/0h13mQN1VzeOAHNFRFinsA.jpg" />
    
[/code]

Twitterでのツイートも上記のmeta情報がなければ`bodyタグ内で一番最初に見つかるimgタグ`  
などの規則で取得していると思われます。

その場合、`Nokogiri`というgemで実現できます。

[code]

    html = Nokogiri::HTML(open('http://www.nokogiri.org/tutorials/installing_nokogiri.html'))
    first_image = html.css('img').first
    image_url = first_image.attributes['src'].try(:value) if first_image
    
[/code]

iOS（swift?)でもURL指定でスクレイピングできるライブラリがあればそちらを用いたらサーバ側での実装はしなくてもいいかもしれません。


CC BY-SA 3.0
2016-12-21T07:56:12.970
31291
2016-12-21T07:56:12.970
512
31227
answer