前回の続きです。
ブラウザのデベロッパーツールのElements
から、HTML
をコピーしました。
<tr> <td> <a href="https://blog.hatena.ne.jp/opll_inaka/" rel="nofollow"> <img class="profile-image" src="https://cdn.profile-image.st-hatena.com/users/opll_inaka/profile.png?15*****707" alt="opll_inaka" title="opll_inaka" width="16" height="16"> <span class="username" data-load-nickname="1" data-user-name="opll_inaka"> <span class="user-name-nickname">Fossa(フォッサ)</span> <span class="user-name-paren">(</span><span class="user-name-hatena-id">id:opll_inaka</span><span class="user-name-paren">)</span> </span> </a> </td> <td> <time datatime="2020-10-31T16:34:36Z" data-relative="" data-epoch="1604162076000" class="time subscribed-time">1日前</time> </td> </tr>
Symfony DomCrawler
Symfony DomCrawler Component v5.1.8
を、使います。
$html
には、上記のHTML
が代入されているのが、前提です。
<?php use Symfony\Component\DomCrawler\Crawler; <省略> $crawler = new Crawler($html); $nodeValues = $crawler->filter('table > tbody > tr')->each(function (Crawler $node, $i) { $array['hatena_id'] = $node->filter('td > a > span')->attr('data-user-name'); if ($node->filter('td > a > span .user-name-nickname')->count()) { $array['nickname'] = $node->filter('td > a > span .user-name-nickname')->text(); } else { $array['nickname'] = $array['hatena_id']; } $array['datetime_utc'] = $node->filter('td > time')->attr('datatime'); return $array; });
取得できるもの
はてなID
user-name-nickname
がある場合、ニックネーム
user-name-nickname
がない場合、はてなID
を入れる- 読者になっていただいた時の日時(標準時)
phpのシンタックスハイライト
はてなブログの場合、<?php
を頭に書かないと、シンタックスハイライトしないみたい。
『なんで、こんなところに<?php
って書いてるねん』って、誤解される場合がありそうで、嫌だなぁ。
今日は、ここまで。