問題タブ [html-tree]

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.

0 投票する
1 に答える
421 参照

windows - HTML::TreeBuilder でのメモリ リーク

私はいくつかのPerlコードを持っています:

プロセスのサイズが着実に増加していることに気付きましたperl.exe(200 万回程度のループ反復後に最大 600 MB まで)。物を出してHTML::TreeBuilderも全然増えません。この漏れを塞ぐために私にできることはありますか?

0 投票する
1 に答える
355 参照

html - HTML::TreeBuilder の「親」関数はどのように機能しますか?

CPANのドキュメントは、私が何かを見逃していない限り、この動作について実際には説明していません。私の問題を説明するために、いくつかの簡単なテストコードをまとめました。

上記のスクリプトを実行すると、出力は次のようになります。

すべてのタグが次々と入れ子になっているのを見て、最初のpタグh1の親は 、2 番目のpタグの親は になると思いますp。親関数bodyが両方のタグを表示しているのはなぜですか?

0 投票する
2 に答える
1906 参照

perl - HTML :: Elementのlook_downルーチンPerlで複数のクラスを指定しますか?

HTML::TreeBuilderを使用してHTMLを解析しています。

' look_down 'ルーチンで複数のクラスを指定できますか?

たとえば、以下を使用してHTMLを検索する場合

'postprofile'また、同じループで追加のクラスを検索することでした。

新しいものを使用せずにこれを行う方法はありますか?for ( $tree->look_down( 'class' => 'postprofile' ))

これにより2セットの結果が返されますが、マージされたセットは1つだけです。

私は使ってみました-for ( $tree->look_down( 'class' => 'postbody||postprofile')) しかし、これはうまくいきませんでした、

前もって感謝します。

0 投票する
1 に答える
741 参照

perl - HTML::Treeで解析した後、データをUTF-8としてマークしたままにする方法は?

私はスクリプトを書きました.UTF-8でエンコードされたHTMLファイルを丸呑みし、それを解析してHTML::Tree. 問題は、文字列を解析した後、UTF-8 としてマークされなくなったことです。

フラグを設定する方法は推奨されていないため_utf8_on()、適切な方法を探しています。

私の簡略化されたコード例:

0 投票する
2 に答える
795 参照

html - Perl HTML::TreeBuilder は、解析されたコンテンツに 、およびタグを追加します。それを停止または回避するにはどうすればよいですか?

背景:
HTML::TreeBuilder を使用して HTML ページ全体を解析しています。参考までに「whole_page」とします。次に、新しい TreeBuilder オブジェクトの継承された parse_content メソッド (whole_page と同じ) を使用して、"html_to_insert" などの html のチャンクを解析します。html_to_insert のルート要素は<div>タグにする必要があります。最終的に、html_to_insert ツリーを whole_page ツリーに挿入する必要があります。

問題:
html_to_insert ツリーが<html>、 、<head>および<body>タグでラップされていますが、これは明らかに必要ありません。HTML::Parser を調べて、問題を解決できるパラメータがないか調べましたが、何も見つかりませんでした。

質問:
parse メソッドが不要なタグで html_to_insert をラップするのを止める簡単な方法はありますか? 私がやろうとしていることを知っていますが、私はこのお尻を逆にやっていますか (より良い方法はありますか)?

助けてくれてありがとう。

0 投票する
1 に答える
696 参照

perl - HTML::Treebuilder を使用して HTML コンテンツを再配置する方法

HTML コンテンツを再配置するスクリプトを作成していますが、2 つの問題が発生しています。私はこの html 構造を持っています。これは映画のタイトルとリリース年で、サムネイルは 5 列にグループ化されています。2011 年から 1911 年までの数十年ごとにグループ化された映画を含む新しい html ファイルを生成したいと考えています。2010-2001; 2000-1991; 等

解決方法がわからない 1 つの問題は、年代に一致しない映画を削除した後、空の「tr」タグとサムネイルの位置が残り、5 つのタイトルで満たされた 5 列のすべての行を再配置する方法がわからないことです。 . また、スクリプトの 1 回の呼び出しで各 10 年を処理する方法についても説明します。ありがとう。

0 投票する
2 に答える
1650 参照

perl - HTML DOMツリーを視覚化/きれいに印刷するにはどうすればよいですか?

IDにアクセスしてWWW::Mechanizeを介してWebページをナビゲートし、HTML :: TreeBuilder :: XPathを介して情報を取得できるようになったので、 Firebugを使用してDOMを読み取り、HTMLツリーのレイアウトを検出します。Mechanizeがキャプチャするコンテンツは、構造化されていないHTMLであり、人間の目には適していません。

Firebugを使用して、一般的なアプローチの後に私がいるIDを確認していますか?IDを取得したら、準備は完了です。追跡するIDがいくつかあるページがいくつかあり、DOMのフォーマットされたレイアウトを取得(ダンプ、印刷など)したいと思っていました。その発見を容易にするために。当然のことながら、Firebugを使用すると非常に簡単になります。もっと簡単な方法がないのではないかと思っています。

PerlMonksでクロスポストされました。

0 投票する
3 に答える
326 参照

regex - Perl: この Web スクレイパーの正規表現が一貫して動作しないのはなぜですか?

スクレイピングしようとしているサイトに関連して、別の問題に遭遇しました。

基本的に、ページのコンテンツから不要なもののほとんどを削除しました。ここで提供されたいくつかの助けのおかげで、必要な日付を分離することができました。非改行スペースに一致するいくつかの初期の問題にもかかわらず、そのほとんどは正常に機能しているようです。ただし、データの各行をフィールドに分割することを目的とした最終的な正規表現で問題が発生しています。各線は株価指数の価格を表します。各行のフィールドは次のとおりです。

  1. ラテン アルファベットの文字と、場合によってはカンマまたはアンパサンドからなる任意の長さの名前で、数字は含まれません。
  2. 小数点以下 2 桁の数値 (インデックスの絶対値)。
  3. 小数点以下 2 桁の数値 (値の変化)。
  4. 小数点以下 2 桁の数値の後にパーセント記号 (値の変化率) が続きます。

分割前の文字列の例を次に示します。 13% 紙・パルプ333.31-0.29-0.09% 化学品729.406.010.83%

この行を分割するために使用している正規表現は次のとおりです。

$mystr =~ s/\n(.*?)(\d{1,4}\.\d{2})(\-?\d{1,3}\.\d{2})(.*?%)\n/\n$1 == $2 == $3 == $4\n/ig;

時々機能しますが、そうでない場合もあります。なぜこれが必要なのかわかりません。(以下の出力例の二重の等号は、フィールドの分割をより見やすくするために使用されています。)

マイナス記号は、インデックスの価格にマイナスの変化が見られたインデックスにとって問題だと思いましたが、マイナス記号にもかかわらず機能する場合があります.

Q. 以下に示す最終的な正規表現がフィールドを一貫して分割できないのはなぜですか?

サンプルコードは次のとおりです。

0 投票する
2 に答える
594 参照

perl - Webクローラーのテキストフォーマット

HTMLテーブルにアクセスするための次のコードがあります。

ただし、Webページはテーブルの境界線を使用して特定のテキストを分割しているため、テキストはフォーマットされずに表示されます。ですから、次のセルでは、ジョーダンズタウンを想定した「ジョーダンズタウンを計算するための数学」のようなものが登場します。これが私が使用しているコードです、

と配列を使用してテキストを分離しようとしましたが、うまくいきませんでしたか?任意のポインタ。ありがとう

0 投票する
1 に答える
691 参照

perl - HTML :: TagFilterは、クラスに基づいてdivを削除します

perlスクリプトを使用して、サーバー上の静的htmlファイルからコンテンツをプルしようとしています。特定のdivのコンテンツを取得したいのですが。私はdivをそのクラス名( "getme")で知っています。HTML ::TreeBuilder->look_downを使用してdivにアクセスできます。どうすればdivタグを削除して、その中のコンテンツだけにアクセスできますか?

HTMLの例

これまでのPerl

フィルタは、クラス属性を削除するだけです。タグ全体を削除するルールを作成できますか、それともこれに対するより良いアプローチがありますか?