12

レストランの住所や特定の場所のさまざまなイベントの日付など、さまざまな Web ページからデータを取得したいと考えています。特定のサイト セットからこのデータを抽出するために使用できる最適なライブラリは何ですか?

4

13 に答える 13

10

.net プログラマー向けの HTML Agility Pack はすばらしいものです。XPath でクエリできる XML ドキュメントで Web ページを変換します。

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a@href")
{
HtmlAttribute att = link"href";
att.Value = FixLink(att);
}
doc.Save("file.htm");

ここで見つけることができます。 http://www.codeplex.com/htmlagilitypack

于 2008-09-15T21:30:23.720 に答える
10

Python を使用している場合は、Beautiful Soup ( http://crummy.com/software/BeautifulSoup )をよく見てください。

非常に有能なライブラリで、スクレイピングが簡単になります。

于 2008-09-15T21:41:48.777 に答える
4

ここでの一般的な答えは、任意の言語 + http ライブラリ + html/xpath パーサーを使用することだと思います。ruby + hpricot を使用すると、きれいな解決策が得られることがわかりました。

require 'rubygems'
require 'hpricot'
require 'open-uri'

sites = %w(http://www.google.com http://www.stackoverflow.com)

sites.each do |site|
  doc = Hpricot(open(site))

  # iterate over each div in the document (or use xpath to grab whatever you want)
  (doc/"div").each do |div|
    # do something with divs here
  end
end

Hpricot の詳細については、http: //code.whytheluckystiff.net/hpricot/ を参照してください。

于 2008-09-15T21:28:17.670 に答える
3

個人的には、この種のタスクにはWWW::Mechanize Perl モジュールが気に入っています。典型的な Web ブラウザをモデルにしたオブジェクトを提供します (つまり、リンクをたどったり、フォームに記入したり、オブジェクトのメソッドを呼び出して「戻るボタン」を使用したりできます)。

実際のコンテンツを抽出するには、それをHTML::TreeBuilderに接続して、現在アクセスしている Web サイトをHTML::Elementオブジェクトのツリーに変換し、必要なデータを抽出します (look_down()メソッドHTML::Elementは特に使える)。

于 2008-09-15T21:32:38.847 に答える
3

私はwatirまたはseleniumが最良の選択だと思います。他の言及されたライブラリのほとんどは実際には HTML パーサーであり、それはあなたが望むものではありません... Web サイトの所有者が自分のデータにアクセスすることを望んでいる場合、彼は自分のデータベースまたはサイトのダンプを置きます。トレントを作成し、すべての http リクエストと高価なトラフィックを回避します。

基本的に、HTML を解析する必要がありますが、さらに重要なのはブラウザーを自動化することです。これにより、マウスを動かしてクリックできるようになり、基本的にユーザーを真似ることができます。これを回避するには、スクリーン キャプチャ プログラムを使用してキャプチャを取得し、それらを decaptcha.com に送信する必要があります (数分の 1 セントで解決します)。「表示されるはずの」ブラウザでレンダリングせずにhtmlを解析して、そのキャプチャファイルを保存することを忘れてください。httprequestscraping ではなく、スクリーンスクレイピングです。

watir は、autoitx (マウスを動かしてフィールドにキーを入力するため -> 適切な JavaScript イベントを設定するために必要な場合もあります) とキャプチャ用の単純なスクリーン キャプチャ ユーティリティを組み合わせて、私のためにトリックを行いました。サイトの所有者がテキストの一部をグラフィックに変換したことを確認するために優れた html パーサーを作成しても、まったく役に立ちません。(問題がありますか? いいえ、OCR ライブラリを取得して jpeg をフィードするだけで、テキストが返されます)。その上、中国のサイトではグラフィックスに多くのテキストがありますが、そこまで行くのはめったに見たことがありません。

Xpath は私の 1 日をいつも救ってくれました。Xpath は素晴らしいドメイン固有言語 (IMHO、私が間違っている可能性があります) であり、ページ内の任意のタグにアクセスできますが、微調整が必​​要になることもあります。

私が見逃したのは「リバーステンプレート」です(セレンのロボットフレームワークにはこれがあります)。Perl の CPAN モジュール Template::Extract にはこれがあり、非常に便利です。

HTML の解析、または DOM の作成はブラウザーに任せます。はい、それほど高速ではありませんが、常に機能します。

また、ユーザーエージェントのふりをするライブラリは役に立たず、サイトは最近のスクレイピングから保護されており、実際の画面でのサイトのレンダリングはキャプチャを超えるために必要になることがよくありますが、情報が表示されるためにトリガーする必要がある JavaScript イベントなどもあります。 .

あなたがRubyに興味があるならWatir、残りはSeleniumだと思います。「ヒューマン エミュレーター」(ロシアでは Web エミュレーター) は、この種のスクレイピング用に作られていますが、その意図を隠していない会社のロシア製品です。

また、最近の 1 週間で Wiley がスクレイピングに関する新しい本を出していると思いますが、これは興味深いものになるはずです。幸運を...

于 2012-02-07T19:14:50.797 に答える
2

個人的には、http: //github.com/shuber/curl/tree/masterhttp://simplehtmldom.sourceforge.net/を PHP のスパイダリング/スクレイピング プロジェクトで使用するのに最適だと思います。

于 2009-02-26T10:09:13.553 に答える
1

Perl WWW::Mechanizeライブラリは、Web サイトと対話して必要な実際のページに到達するというロバ作業を行うのに優れています。

于 2008-09-15T21:22:49.167 に答える
1

LWP (Perl の場合は Libwww) を使用します。ここに良いガイドがあります: http://www.perl.com/pub/a/2002/08/20/perlandlwp.html

WWW::Scraper のドキュメントは次のとおりです: http://cpan.uwinnipeg.ca/htdocs/Scraper/WWW/Scraper.html これはベースとして役立ちます。おそらく、レストランのマイニングに適合する独自のモジュールを作成したいと思うでしょう。ニーズ。

LWP は、構築するための基本的なクローラーを提供します。

于 2008-09-15T21:24:55.417 に答える
1

Perl Mechanize を推奨する多くの回答がありましたが、Ruby Mechanize (Perl のバージョンと非常によく似ています) の方が優れていると思います。フォームのようなものを、構文的によりクリーンな方法で処理します。また、Ruby Mechanize の上で動作するフロントエンドがいくつかあり、作業がさらに簡単になります。

于 2008-09-15T21:43:26.730 に答える
0

誰かが言ったこと。

任意の言語を使用してください。

優れたパーサー ライブラリと http ライブラリがあれば、設定は完了です。

ツリーのものは遅く、優れた解析ライブラリを使用するだけです。

于 2009-03-05T23:56:03.833 に答える
0

どの言語を使用しますか?

curl with awk だけで十分かもしれません。

于 2008-09-15T21:20:09.423 に答える
0

tidyを使用して XHTML に変換し、選択した言語で利用可能な XML 処理機能を使用できます。

于 2008-09-15T21:22:30.523 に答える
0

BeautifulSoupをお勧めします。これは最速ではありませんが、ほとんどのパーサーが詰まる (X)HTML ページの形式が整っていない点に関しては、非常に優れたパフォーマンスを発揮します。

于 2008-09-15T21:22:58.340 に答える