2

さまざまなページのメインコンテンツを取得する必要がある、クローラーのような特別なアプリケーションを作成しています。明確にするために:私はページの本当の「肉」が必要です(当然、1つある場合)

私はさまざまなアプローチを試しました:

  1. 多くのページにはRSSフィードがあるので、フィードを読んでこのページ固有のコンテンツを取得できます。
  2. 多くのページで「コンテンツ」メタタグが使用されています
  3. 多くの場合、画面の中央に表示されるオブジェクトは、ページのメインの「コンテンツ」です。

ただし、これらの方法は常に機能するとは限りません。Facebookは、これを実行するだけで非常に優れた仕事をしていることに気付きました(リンクを添付したい場合は、リンクページで見つけたコンテンツが表示されます)。

それで、私が見落としたアプローチについて、何かアドバイスはありますか?

ありがとう!

4

2 に答える 2

1

Webページに「これは肉です」とマークを付ける標準的な方法は実際にはありません。ほとんどのページは、コアビジネスを簡単に盗むことができるため、これを望んでいません。したがって、実際には、ページごとのルールを使用して必要なコンテンツを見つけることができるフレームワークを作成する必要があります。

于 2009-08-05T14:09:46.283 に答える
0

さて、あなたの質問はまだ少し曖昧です。ほとんどの場合、「クローラー」はWeb上のデータをテキスト形式で検索し、保存や解析などのために処理します。「Facebookスクリーンショット」はまったく別の獣です。

Webベースのクローラーを探しているだけの場合は、WebページのDOMを非常に簡単にトラバースするために使用でき、探しているコンテンツを取得できるライブラリがいくつかあります。

Pythonを使用している場合は、Beautiful Soupを試してください。Rubyを使用している場合は、 hpricot を試してください。

Webページのコンテンツ全体を後日処理する場合は、「html」タグの下にあるすべてのものを取得して保存するだけです。

ページからすべてのリンクを取得するためのBeautifulSoupの例を次に示します。

require 'hpricot'
require 'open-uri'
doc = Hpricot(open("http://www.stackoverflow.com"))
(doc/"a").each do |link|
  puts link.attributes['href']
end

編集:主に同じサイトからコンテンツを取得する場合(たとえば、Redditのコメントセクション、StackOverflowからの質問、Diggリンクなど)、クローラーが「OK、I 'm on Reddit、'thing'のクラスですべてを取得します。クラス/IDが"main"、 "content"、 "center"などのdivなど、デフォルトで検索するもののリストを指定することもできます。 。

于 2009-08-05T13:59:10.680 に答える