Symfony、Goutte、および DOMCrawler を使用してページをスクレイピングしています。残念ながら、このページには昔ながらのデータ テーブルが多数あり、ID、クラス、または識別要素はありません。リクエストから返されたソースコードを解析してテーブルを見つけようとしていますが、情報にアクセスできないようです
フィルタリングしようとすると、最初のノードのみがフィルタリングされ、目的のデータがそこにないため、何も返されないと思います。
だから私は$crawler
オブジェクトを持っています。そして、私が望むものを得るために、以下をループしようとしました:
$title = $crawler->filterXPath('//td[. = "Title"]/following-sibling::td[1]')->each(funtion (Crawler $node, $i) {
return $node->text();
});
よくわかりませんCrawler $node
が、Web ページの例から取得したところです。おそらく、これを機能させることができれば、オブジェクト内の各ノードをループして、$crawler
実際に探しているものを見つけることができます。
ページの例を次に示します。
<table>
<tr>
<td>Title</td>
<td>The Harsh Face of Mother Nature</td>
<td>The Harsh Face of Mother Nature</td>
</tr>
.
.
.
</table>
そして、これは 1 つのテーブルにすぎません。多くのテーブルがあり、この 1 つの外に大きな雑然とした混乱があります。何か案は?
$crawler
(注: 以前は、必要な情報に対してオブジェクトにフィルターを適用することができました。次にserialize()
、情報を取得し、最終的に文字列を取得しました。これは理にかなっています。しかし、文字列をまったく取得できません。理由はわかりません。)