タグ付けされた質問 「html-parsing」


30
HTMLスクレイピングのオプション?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 HTMLスクレイピング用のPythonパッケージであるBeautiful Soupを試すことを考えています。私が見るべき他のHTMLスクレイピングパッケージはありますか?Pythonは必須ではありません。実際、他の言語についても聞きたいと思っています。 これまでの話: パイソン 美しいスープ lxml HTQL スクレイピー 機械化 ルビー のこぎり プリコット 機械化 scrAPI scRUBYt! ウォンバット ワティル 。ネット HTMLアジリティパック WatiN Perl WWW :: Mechanize ウェブスクレーパー ジャワ タグスープ HtmlUnit ウェブ収穫 jARVEST jsoup Jericho HTMLパーサー JavaScript リクエスト Cheerio アルトゥー ノードホースマン phantomjs PHP グート htmlSQL PHPシンプルHTML DOMパーサー CURLによるPHPのスクレイピング ScarletsQuery それらのほとんど …

9
JSでHTML文字列を解析する
私は解決策を探しましたが、何も関連性がなかったので、ここに私の問題があります: HTMLテキストを含む文字列を解析したい。JavaScriptでやりたいです。 このライブラリを試しましたが、文字列からではなく、現在のページのHTMLを解析しているようです。下のコードを試すと、ページのタイトルが変わるからです。 var parser = new HTMLtoDOM("<html><head><title>titleTest</title></head><body><a href='test0'>test01</a><a href='test1'>test02</a><a href='test2'>test03</a></body></html>", document); 私の目標は、文字列のように読んだHTML外部ページからリンクを抽出することです。 それを行うためのAPIを知っていますか?

18
正規表現を使用してHTMLを解析する:なぜそうしないのですか?
質問者が正規表現を使用してHTMLから一部の情報を取得する、stackoverflowのすべての質問には、必然的に正規表現を使用してHTMLを解析しないことを示す「回答」が含まれます。 何故なの?Beautiful Soupのように、引用符で囲まれていない「実際の」HTMLパーサーが存在することは承知しており、パワフルで便利だと確信していますが、単純、迅速、またはダーティなことをしているのであれば、その理由はいくつかの正規表現が問題なく機能するときに、複雑なものを使用するのは面倒ですか? さらに、私が正規表現について理解していない根本的なものがあって、それらを一般的に解析するのに悪い選択にしていますか?

3
どのHTMLパーサーが最適ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 多くのパーサーをコーディングしています。これまでは、解析とブラウザーの自動化にHtmlUnitヘッドレスブラウザーを使用していました。 ここで、両方のタスクを分離したいと思います。 私の作業の80%は解析のみを含むため、HtmlUnitで最初にページをロードしてからソースを取得して解析するのに時間がかかるため、軽量のHTMLパーサーを使用したいと考えています。 どのHTMLパーサーが最適か知りたい。HtmlUnitパーサーに近い場合、パーサーの方が優れています。 編集: せいぜい、私は少なくとも以下の機能が欲しいです: 速度 「id」、「name」、「tag type」でHtmlElementを見つけやすくなります。 汚れたHTMLコードをクリーンアップしないのであれば、私には問題ありません。HTMLソースをクリーンアップする必要はありません。HtmlElement間を移動してデータを収集する最も簡単な方法が必要です。

7
Pythonを使用したHTMLの解析
Pythonリスト/辞書/オブジェクトの形式でタグを取得するのに役立つPython用のHTMLパーサーモジュールを探しています。 次の形式のドキュメントがある場合: <html> <head>Heading</head> <body attr1='val1'> <div class='container'> <div id='class'>Something here</div> <div>Something else</div> </div> </body> </html> 次に、HTMLタグの名前またはIDを介してネストされたタグにアクセスする方法を提供します。これにより、基本的に、divタグclass='container'内に含まれているbodyタグ内のコンテンツ/テキスト、または類似のものを取得するように要求できます。 Firefoxの「要素の検査」機能(HTMLの表示)を使用している場合は、ツリーのように入れ子になった方法ですべてのタグが提供されることがわかります。 ビルトインモジュールの方がいいと思いますが、少し質問しすぎるかもしれません。 私はStack Overflowとインターネット上のいくつかのブログで多くの質問をしました、そしてそれらのほとんどはBeautifulSoupまたはlxmlまたはHTMLParserを提案しますが、これらのいくつかは機能を詳述し、どちらがより速く/より効率的かについての議論として終わります。


5
正規表現を使用していない場合、HTML解析はどのように機能しますか?
HTML文字列から何かを解析または抽出する方法を尋ねる質問が毎日表示され、最初の回答/コメントは常に「RegExを使用してHTMLを解析しないでください。怒りを感じないようにしてください!」(その最後の部分は時々省略されます)。 これは私にとってかなり混乱します。一般的に、複雑な文字列を解析する最良の方法は正規表現を使用することだといつも思っていました。では、HTMLパーサーはどのように機能するのでしょうか。解析に正規表現を使用していませんか。 正規表現を使用する場合の特定の引数の1つは、解析の代替手段が常に存在するとは限らないことです(JavaScriptなど、DOMDocumentが普遍的に使用可能なオプションではない場合)。たとえば、jQueryは、正規表現を使用してHTML文字列をDOMノードに変換することで問題なく管理できるようです。 これをCWするかどうかわからない、それは私が答えたい真の質問であり、ディスカッションスレッドを意図するものではありません。

5
Node.jsでHTMLページを解析する方法
大量のHTMLページを(サーバー側で)解析する必要があります。 私たちは皆、正規表現がここに行く方法ではないことに同意します。 JavaScriptがHTMLページを解析するネイティブな方法であるように思えますが、その前提は、JavaScriptがブラウザ内で持つすべてのDOM機能を持つサーバー側のコードに依存しています。 Node.jsにはその機能が組み込まれていますか? サーバー側でHTMLを解析するこの問題へのより良いアプローチはありますか?

8
grep、regex、またはperlを使用してパターンに従って文字列を抽出する方法
次のようなファイルがあります。 <table name="content_analyzer" primary-key="id"> <type="global" /> </table> <table name="content_analyzer2" primary-key="id"> <type="global" /> </table> <table name="content_analyzer_items" primary-key="id"> <type="global" /> </table> 私は続く引用符で何かを抽出する必要がありname=、すなわち、content_analyzer、content_analyzer2とcontent_analyzer_items。 私はこれをLinuxボックスで行っているので、sed、perl、grep、またはbashを使用したソリューションで問題ありません。

8
JavaScriptまたはjQueryでHTMLを正規化する方法は?
タグは複数の属性を持つことができます。コードに属性が表示される順序は重要ではありません。例えば: <a href="#" title="#"> <a title="#" href="#"> JavascriptでHTMLを「正規化」して、属性の順序が常に同じになるようにするにはどうすればよいですか?常に同じである限り、どちらの順序を選択してもかまいません。 更新:私の当初の目標は、わずかな違いで2つのHTMLページを(JavaScriptで)簡単に差分できるようにすることでした。ユーザーは別のソフトウェアを使用してコードを編集できるため、属性の順序が変わる可能性があります。これにより、差分が冗長になりすぎます。 答え:まあ、最初にすべての答えに感謝します。そして、はい、それは可能です。これが私がそれをどうやってやったかです。これは概念実証であり、確実に最適化できます。 function sort_attributes(a, b) { if( a.name == b.name) { return 0; } return (a.name < b.name) ? -1 : 1; } $("#original").find('*').each(function() { if (this.attributes.length > 1) { var attributes = this.attributes; var list = []; for(var i =0; i …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.