(追記:仮想環境)
CentOS7
Vagrant 1.8.1
使っている環境
php 5.6
symfony 2.2
goutte 3.1
上記環境でクローラーを作っています。
最初は何度も実行をするから、クローリングするサイトへ負荷がかかるだろうと思い、
サイトトップページのhtmlを丸々コピーして仮想環境で作業しています。
ところが、そのhtmlファイルのパスをURLとして、
トップページの情報をvar_dumpしてみたところテキストなどの値が何も取れておりませんでした。
試しにファイルのパスではなく、実際にクローリングしたいサイトのURLで実行してみると
テキストなどの値が取れました。
php
1require_once "/var/www/html/crawler/vendor/autoload.php"; 2 3use Symfony\Component\DomCrawler\Crawler; 4use Goutte\Client; 5 6 7$cli = new Client(); 8// 仮想環境に設置したhtmlファイルのパスををurlにしてクローリングすると $crawler に値が入ってこない。 9$url = "http://user.com/crawler/top.html"; 10 11 // 実際に値を取得したいサイトのURLをurlにすると $crawler に値が入ってきた。 12 // $url = "http://www.××××××.co.jp"; 13 14// ここでvar_dumpすると上記の違いが出てくる。 15$crawler = new Crawler($url); 16 17// サイトトップページの情報をリクエスト 18$crawler = $cli->request("GET", $url); 19var_dump($crawler);
なぜhtmlファイルのパスだと値が取れないのかお分かりになる方がいらっしゃいましたら
教えていただけますと幸いです。goutteを使っての解決方法でお願いします。
どうぞよろしくお願いします。
確認したこと
・ファイルのパスは間違っていないか。
・htmlファイルの中身がちゃんと入っているか。
・var_dumpした時に下記を見て値が取れていないと判断しました。
html
1["textContent"]=> 2 string(1221) " 3function getCookie(c_name) { // Local function for getting a cookie value 4 if (document.cookie.length > 0) { 5 c_start = document.cookie.indexOf(c_name + "="); 6 if (c_start!=-1) { 7 c_start=c_start + c_name.length + 1; 8 c_end=document.cookie.indexOf(";", c_start); 9 10 if (c_end==-1) 11 c_end = document.cookie.length; 12 13 return unescape(document.cookie.substring(c_start,c_end)); 14 } 15 } 16 return ""; 17} 18function setCookie(c_name, value, expiredays) { // Local function for setting a value of a cookie 19 var exdate = new Date(); 20 exdate.setDate(exdate.getDate()+expiredays); 21 document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()) + ";path=/"; 22} 23function getHostUri() { 24 var loc = document.location; 25 return loc.toString(); 26} 27setCookie('××××××××××', '×××.×××.×××.×××', ××); 28try { 29 location.reload(true); 30} catch (err1) { 31 try { 32 location.reload(); 33 } catch (err2) { 34 location.href = getHostUri(); 35 } 36} 37This site requires JavaScript and Cookies to be enabled. Please change your browser settings or upgrade your browser." 38 }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/19 08:55
2016/06/19 10:02