同じサイトの複数のページから4〜5行のテキストを取得する方法を見つけようとしていますが、情報は常にWebページの同じ場所にあります。その情報をテキストまたはできればExcelファイルに取得するにはどうすればよいですか?
同じサイトの複数のページから4〜5行のテキストを取得する方法を見つけようとしていますが、情報は常にWebページの同じ場所にあります。その情報をテキストまたはできればExcelファイルに取得するにはどうすればよいですか?
回答:
従来は、ページのHTMLをダウンロードし、データの直前にある定数を探します。残念ながら、すべてのサイトは異なるため、あなたの質問には普遍的な答えがありません。私は、Python、Bash、さらにはC#で、ページをプルダウンし、必要なタグを検索して抽出するスクリプトを作成しました。
ページのソースを見て、データの種類を見つけて(これにはファイアバグが非常に役立ちます)、抽出したいコンテンツの開始と終了の区切り文字を決定します。
XKCD.comをスクレイプするために人々が書いたいくつかのスクリプトがあります http://forums.xkcd.com/viewtopic.php?f=11&t=63037
Javascript(Greasemonkeyスクリプト/ Userscript /拡張機能/ブックマークレット/ ...の形式)を使用してページをスクレイプしてみることができます。ブックマークレットは、そのページに手動でジャンプして実行する必要があることを意味します。他の方法では、データをデータベースに直接渡すことができます(特権拡張機能またはWebサーバーを使用する場合はローカルストレージ)。
Javascriptのコードを書くことは、そのフィールド上の知識を必要とし、あなたはDOMのような機能のためになりdocument.getElementById
、getElementsByClassName
およびquerySelector
またはXPathの。EtsyはすでにjQueryを使用しているため、データを取得するためにjQueryを使用することもできます。
スクレイピングの代替として、可能な場合はAPIの使用を検討してください。クイック検索の結果、次のページが見つかりました。
これはあなたの専門知識がどの分野に属するかに大きく依存しますが、過去にはこの種の操作では通常PHP Simple HTML DOM Parserを使用します。使い方は本当に簡単で、ドキュメントは非常に有益です。
DOMを照会するための構文は、jQueryを以前に使用したことがある場合はかなり似ています。
あなたはより冗長を使用することができますfind('div[id=foo]');
し、find('div[class=bar]');
ほかにセレクタを定義するよりコンパクトなjQueryのような方法で使用することができるfind('#foo');
としますfind('.bar');
。
私は個人的にChrome Inspectorを使用して、ID、クラス、タグなどを見つけるためにクエリする要素を特定します。
メモリにロードするファイルのサイズによっては、メモリエラーが発生する可能性がわずかにありますが、ページが上記のスクリーンショットのページに似ている場合は問題ないはずです。