Goutteではまった
巷ではgoutte vs simple_html_dom が話題ですが
goutteはyoutubeのスクレイピングは出来ませんでした。
というかgoutteのせいではなく内部で使用しているsymfonyのdomcrawlerが原因ですが。
<?php
require('./vendor/autoload.php');
use Symfony\Component\DomCrawler\Crawler;
$url = 'https://www.youtube.com/results?search_query=php';
$crawler = new Crawler();
$crawler->addContent(file_get_contents($url));
echo $crawler->html();
これでどうなるかというと
javascript内の
var content = '<!DOCTYPE html><html><head></head><body>' +iframeContent + '</body></html>';
の一文を誤解析して、この先の内容がどうやっても取れませんでした。
2015/6/12
さらに調べてみると内部で使っているphp組み込みのXML DOM Parserが根本原因のようで、
いろいろイレギュラーな形になっているっぽいHTMLの都合は考慮されていないみたい。
simple_html_domは完全に自前のParserで正規表現を使ってscriptタグを排除したりいろいろしてくれているのでphpでスクレイピングするならこちらのほうが無難のよう。
Author And Source
この問題について(Goutteではまった), 我々は、より多くの情報をここで見つけました https://qiita.com/ichi944/items/81a5465365b98260d46e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .