PHP

phpでスクライピングをやってみた part2

More than 1 year has passed since last update.

始めに

前回の続きです

あれこれやってうまくいきました

まずは、うまくいったソースと結果を示します

sample.php
<?php
$dom = new DOMDocument();
$dom->loadHTML(file_get_contents('https://finance.yahoo.co.jp/'));
$target=array_filter(
    iterator_to_array($dom->getElementsByTagName('a')),
    function($a){return $a->getAttribute('data-ylk')==='slk:yoso;pos:1';}); 
array_walk($target, function($value, $key){echo $value->nodeValue;});

?>

出力結果

[買い] Hamee 本田隆一郎

なぜうまくいかなかったか?

  • DOMDocument::load('https://finance.yahoo.co.jp/'); は非推奨のようだった
  • load は厳格なxmlファイルに用いるべき 厳格ではないhtmlソースにはloadHtmlを用いるべきだった