プロが教える店舗&オフィスのセキュリティ対策術

phpのgoutteでスクレイピングし、下記のように、【ラーメン】と【うどん】だけを抜粋したいのです。
しかし、余計な【コーラ】と【お茶】まで抽出してしまいます。
作成したい結果のみを作成するには、どのように対応したらよいのでしょうか。

■作成したい結果
ラーメン
うどん

■現状の結果
ラーメン
うどん
コーラ
お茶


■htmlソースコード

<section class="block">
<h2 class="title">食べ物タイトル</h2>
<ul class="food">
<li>
<a href="省略">ラーメン</a>
</li>
<li>
<a href="省略">うどん</a>
</li>
</ul>
</section>

<section class="block">
<h2 class="title">飲み物タイトル</h2>
<ul class="food">
<li>
<a href="省略">コーラ</a>
</li>
<li>
<a href="省略">お茶</a>
</li>
</ul>
</section>


■スクレイピングソース
$crawler->filter('section.booksLink ul li')->each(function($element){
$name = $element->filter('a')->text();
});


【filter('section.booksLink ul li'】の部分で、sectionタグ二つともが対象になっており、【コーラ】と【お茶】までが抽出されているのだろう。と思うのですが、
一つ目の<section>だけ抜いて、elementに抽出する方法が分かりません。

【■作成したい結果】のように抽出するにはどの様に修正すれば、良いのでしょうか。
ご教授よろしくお願いいたします。

A 回答 (1件)

こちらではじめてgoutteを知り、面白いな〜と思ったくらいのもんなので、正確な回答である自信は全然ないのですが、要は最初の要素だけ抜き出したいので、


$crawler->filter('section.booksLink ul li:nth-child(1)')->each(function($element){
でいけないでしょうか。。
goutteが擬似要素をサポートしているのかわからないのですが・・・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!