LoginSignup
5
5

More than 5 years have passed since last update.

Goutteではまった

Last updated at Posted at 2014-12-23

巷ではgoutte vs simple_html_dom が話題ですが
goutteはyoutubeのスクレイピングは出来ませんでした。
というかgoutteのせいではなく内部で使用しているsymfonyのdomcrawlerが原因ですが。

scraping.php
<?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でスクレイピングするならこちらのほうが無難のよう。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5