2

ウィキペディアの「Google」のページの画像の完全な URL をすべて抽出したい

私は試してみました:

http://en.wikipedia.org/w/api.php?action=query&titles=Google&generator=images&gimlimit=10&prop=imageinfo&iiprop=url|dimensions|mime&format=json

しかし、このようにして、次のようなグーグル関連の画像も得られませんでした:

http://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg
http://upload.wikimedia.org/wikipedia/en/4/4a/Commons-logo.svg
http://upload.wikimedia.org/wikipedia/en/4/4a/Commons-logo.svg
http://upload.wikimedia.org/wikipedia/commons/f/fe/Crystal_Clear_app_browser.png

Googleページに表示される画像だけを抽出するにはどうすればよいですか

4

1 に答える 1

5
  1. ページのソースコードを取得します、https://en.wikipedia.org/w/index.php?title = Google&action = raw
  2. 次のような部分文字列をスキャンします[[File:Google web search.png|thumb|left|On February 14, 2012, Google updated its homepage with a minor twist. There are no red lines above the options in the black bar, and there is a tab space before the "+You". The sign-in button has also changed, it is no longer in the black bar, instead under it as a button.]]
  3. ページ上のすべての画像についてAPIに問い合わせるhttp://en.wikipedia.org/w/api.php?action=query&titles=Google&generator=images&gimlimit=10&prop=imageinfo&iiprop=url|dimensions|mime&format=json
  4. 手順2で見つかった画像名と一致するURLを除外します。

ステップ2と4にはさらに説明が必要です。

@2。正規表現/\b(File|Image):[^]|\n\r]+/で十分です。Rubyの正規表現で\bは、選択した言語ではサポートされていない可能性のある単語の境界を示します。私が提案した正規表現は、私の頭に浮かぶすべてのケースに一致します:[[File:something.jpg]]、ギャラリータグ:<gallery>\nFile:one.jpg\nFile:two.jpg\n</gallery>、テンプレート:{{Infobox|pic = File:something.jpg}}。ただし、を含むファイル名とは一致しません]。それらが合法であるかどうかはわかりませんが、合法である場合、それらは非常に珍しいはずであり、大したことではないはずです。

次のような構成のみを照合する場合は[[File:something.jpg|thumb|description]]、次の正規表現の方が適切に機能します。/\[\[(File|Image):[^]|]+/

@4。に一致する名前からすべての文字を削除します/[^A-Za-z0-9]/。それらをエスケープするよりも簡単で、ほとんどの場合、十分です。

アイコンは、ほとんどの場合直接添付される記事の主題に関連する画像とは対照的に、テンプレートに添付されることがほとんどです([[File:…]])。ただし、例外があります。たとえば、一部の記事では、写真に{{Gallery}}テンプレートが添付されています。<gallery>ギャラリーの特別な構文を紹介するタグもあります。あなたは私のソリューションをあなたのニーズに合わせて調整する必要があります、そしてそれでもそれは完璧ではありませんが、それは十分に良いはずです。

于 2012-12-18T19:33:47.893 に答える