問題タブ [html5lib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - BeautifulSoup - 本文の内容を取得するにはどうすればよいですか
HTML
BeautifulSoupで解析しています。body
最後にコンテンツを取得したいのですが、body
タグがありません。しかし、BeautifulSoup は、、、およびタグを追加html
しhead
ますbody
。この googlegrops ディスカッションでは、考えられる解決策の 1 つが提案されています。
この解決策はハックです。それを行うためのより良い明確な方法があるはずです。
python - BeautifulSoup - lxml および html5lib パーサーのスクレイピングの違い
Python 2.7でBeautifulSoup 4を使用しています。Web サイトから特定の要素を抽出したいと思います (数量、以下の例を参照)。何らかの理由で、lxmlパーサーでは、ページから目的の要素をすべて抽出することはできません。最初の 3 つの要素のみを出力します。html5libパーサーを使用して、それらすべてを抽出できるかどうかを確認しようとしています。
このページには、価格と数量とともに複数のアイテムが含まれています。各アイテムに必要な情報を含むコードの一部は、次のようになります。
次の 3 つのケースを考えてみましょう。
ケース 1 - データ:
版画:
ケース 2 - LXML:
版画:
ケース 3 - HTML5LIB:
次のエラーが表示されます。
html5lib パーサーを使用して必要な情報を抽出するには、コードをどのように適応させる必要がありますか? html5lib を使用した後、コンソールにスープを表示するだけで必要な情報をすべて表示できるので、必要なものを取得できると考えました。lxmlパーサーには当てはまらないので、lxmlパーサーがlxmlパーサーを使用してすべての数量を抽出していないように見えるという事実にも興味があります。
python - BeautifulSoup でさまざまな要素を取得する: ネストされた要素での重複を避ける
BeautifulSoup4を使用して、ローカルに保存されたWebサイト(Pythonドキュメント)からさまざまなコンテンツ(クラス)を取得したいので、このコードを使用してそれを行います(index.htmlはこの保存されたWebサイトです:https ://docs.python.org/3 /library/stdtypes.html )
ファイルハンドラーは結果出力専用であり、問題自体には影響しません。
私の問題は、結果がネストされていることです。たとえば、メソッド "__eq__ (exporter) は、1. クラス内で、2. スタンドアロンのメソッドとして検出されます。
したがって、他の結果内のすべての結果を削除して、すべての結果を同じ階層レベルに配置したいと考えています。これどうやってするの?それとも、最初のステップでそのコンテンツを「無視」することさえ可能ですか? 私の言いたいことを理解していただければ幸いです。
python - BeautifulSoup:葉から根まで検索して、「最も深い」要素を最初に取得しますか?
これに似た研究プロジェクトでは、 Python ドキュメントからすべての「ドキュメント ユニット」を抽出したいと考えています。 Python ドキュメントのドキュメント ユニットは (html-meta タグとして) 次のようになります。
- メソッド( dlクラス: メソッド)
- クラス( dl クラス: クラス)
- セクション( divクラス: セクション)
これらは入れ子にする必要があります。セクションには、複数のメソッドを含む複数のクラスが含まれます。しかし、実際には非常に不規則です。
例 1:セクションに複数のクラスとメソッドが含まれている場合: 各メソッドを単独で取得し、メソッドを含まない各クラス (既に取得済み) と、クラスを含まないセクション (その場合は既に取得済み) とメソッドを含まないセクション (私もすでに持っています)が、残りの部分と一緒に(そこには多くの追加のものがあるため)
例 2:メソッドまたはクラスにそれらが表示されるセクションがない場合、上記のようにそれらも必要であり、それらを忘れてはなりません。
注:簡単にはなりませんが、元のドキュメントと同じ順序のリストにそれらすべてを取得したいと思います。
私は BeautifulSoup で試してみましたが、そのためには「葉から根まで」検索して最も深い要素を最初に取得する必要があると思います。これは (AFAIK) BeautifulSoup4 ではサポートされていません。
最初は重複を避けることが問題だと思っていましたが、実際にはそれが主な問題ではありません。
ヒントをいただければ幸いです。
python - html5lib/bleach で特定の HTML サニタイズをバイパスする
をbleach
使用しています。これは、テンプレートhtml5lib
として設計された HTML フラグメントであるユーザー生成コンテンツをクリーンアップするために使用しますdust.js
この状況を除いて、すべてがうまくいきました-
入力:
出力:
ループ タグはテーブルの外に配置されています。これは完全に理にかなっています-html5libは私のhtmlを修正しています。コンテンツは、td/th タグでラップされていない限り、テーブル構造内にあってはなりません。私は通常、このような修正が行われることを望んでおり、それでも修正が行われることを望んでいますが、何らかの方法でこれらのタグを取得する方法があるかどうか疑問に思っています.
過去に同様の状況に遭遇し、このサニタイズ動作を抑制できた人はいますか?
これまでに思いついた唯一のアプローチは、正規表現できるタグでコントロールをラップすることです。
このアプローチの問題は、このフォーマット ハックを正規表現すると、簡単に元に戻すことができないことです。エンコードされたテンプレートは編集できなくなります。
php - PHP での html5lib を使用した Xpath
動作しないこの基本的なコードがあります。html5lib php で Xpath を使用するにはどうすればよいですか? または、他の方法で HTML5 を使用した Xpath。
要素が見つかりません。ルート要素を取得するために使用し$xpath->query('.')
ます(一般的にxpathは機能するようです)。$dom->getElementsByTagName('h1')
は働いている。