0

テーブルの多いページを DOMXpath でスクレイピングするのに少し問題があります。

レイアウトは本当に醜いです。つまり、テーブル内のテーブル内のテーブルからコンテンツを取得しようとしています。Firebug FirePath を使用して、テーブル要素に対して次のパスを取得しています。

 html/body/table/tbody/tr[3]/td/table[1]/tbody/tr[2]/td[1]/table[1]/tbody/tr[3]/td[4]

さて、無限の実験の結果、スタンドアローンのテーブルを機能させるには「tbody」タグを削除する必要があることがわかりました。しかし、これはテーブル内のテーブルには十分ではないようです。だから私の質問は、テーブル内のテーブル内のテーブルからコンテンツを取得するにはどうすればよいですか?

ここにスクレイピングしようとしているファイルをアップロードしました: 1

4

2 に答える 2

1

私はあなたが別のテーブル内のテーブルの値を取得したい複雑で適切にフォーマットされていないhtmlのソースを廃棄するのと同じ問題を経験しました。

私は次のような一連の機能で取得したい部分に注目するというアプローチを採用しました。

function parse_html() {//gets a specific part of the table i chose to extract the contents
    $query = $xpath->query('//tr[@data-eventid]/@data-eventid'); //gets the table i want
    $this->parse_table();
}
function parse_table() {//
    $query = $xpath->query('//tr[@data-eventid="405412"]/td[@class="impact"]/span[@title]/@title');...etc//extracts the content of the table
    $this->parseEvaluate();
} 
function parseEvaluate(){
    ...verifying values if correct
}

ただアイデアを与えるだけです。

于 2012-12-28T02:37:51.690 に答える
0

どうですか:

//*[contains(text(),"GRABME")]

それはおそらくあなたが望んでいるものではないことはわかっていますが、あなたはその考えを理解しています. パターンを特定し、そのパターンを使用して xpath を構築します。

于 2012-12-28T02:17:51.530 に答える