Zadejte hledaný výraz...

PHP parser file_get_contents

Zdravím,
právě dělám skript, který načte URL a zobrazí kód ovšem zobrazuje se úplně jiný, než mě v prohlížeči. Může někdo prosím poradit?
http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0001109354&type=&dateb=&owner=exclude&count=100&output=xml
STOXX.com | Component Information
Stoxx.com = zde se mi po načtení zobrazí, že detail není k dispozici
Sec.gov = zde se mi zobrazí úplně jiná struktura
Co jsem zkoušel?
- krom file get content jsem i zkoušel využít tuto funkci, problém ale zůstal stále stejný
function file_get_sock($url,$headers=false) {
$url = parse_url($url);
if (!isset($url)) {
if ($url == 'http') { $url=80; }
elseif ($url == 'https') { $url=443; }
}
$url=isset($url)?$url:'';
$url=$url.'://';
$eol="rn";
$headers = "GET ".$url.$url.$url." HTTP/1.0".$eol.
"Host: ".$url.$eol.
"Referer: ".$url.$url.$url.$eol.
"Content-Type: application/x-www-form-urlencoded".$eol.
"Content-Length: ".strlen($url).$eol.
$eol.$url;
$fp = fsockopen($url, $url, $errno, $errstr, 30);
if($fp) {
fputs($fp, $headers);
$result = '';
while(!feof($fp)) { $result .= fgets($fp, 128); }
fclose($fp);
if (!$headers) {
$pattern="/^.*rnrn/s";
$result=preg_replace($pattern,'',$result);
}
return $result;
}
}
Moc předem děkuji za rady
9. 4. 2015 09:36:49
https://webtrh.cz/diskuse/php-parser-file_get_contents/#reply1104990
Je klidně možné že reagují na "prohlížeč" takže bys měl posílat i USER AGENT, doporučuji prostudovat cUrl http://php.net/manual/en/curl.examples-basic.php
9. 4. 2015 09:42:28
https://webtrh.cz/diskuse/php-parser-file_get_contents/#reply1104989
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
9. 4. 2015 12:39:01
A nebo ještě lépe rovnou guzzle:
Guzzle | PHP HTTP client and framework for consuming RESTful web services —…
9. 4. 2015 12:39:01
https://webtrh.cz/diskuse/php-parser-file_get_contents/#reply1104988
hacktrack
verified
rating uzivatele
(5 hodnocení)
9. 4. 2015 14:16:53
Jak pise kolega nahore - cUrl pokud je podporovany a user agent, ale urcite se snazte dodrzet i content-type, accept-encoding .. A proverte si jestli se vam nevraci 301/302 ono totiz pokud nejste na spravne url nebo nemate cookies stranka vas presmeruje pripadne odpovi 301/302 a s parametrem set-cokies
9. 4. 2015 14:16:53
https://webtrh.cz/diskuse/php-parser-file_get_contents/#reply1104987
Napsal jsem ti jednoduchou funkci, abych ti nastínil, jak pracovat s cURL ručně v PHP .... buď můžeš použít curl_setopt funkci pro každé nastavení nebo všechna nastavení dát do pole funkci curl_setopt_array.
/**
* @param $url URL adresa
* @return string Vrátí obsah dané stránky
*/
function getContent($url)
{
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url); // nastavíme URL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // získáme odpověď jako string
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); // počet vteřin, jak dlouho bude cURL čekat na odpověď
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); // simulace User-Agent
$postDataString = "var1=value1&var2=value2&var3=value3&var4=value4"; // pro POST příkaz
/** Další užitečné parametry cURL:
curl_setopt_array($curl, array(
'CURLOPT_HEADER' => true, // vrátí hlavičky
'CURLOPT_POST' => true, // pokud chceme poslat HTTP POST příkaz
'CURLOPT_POSTFIELD' => $postDataString, // chceme-li poslat POST příkaz, tak zde musí být string "var1=value&var2=value&var3=value&var4=value" atd ...
'CURLOPT_HTTPGET' => true, // chceme-li poslat HTTP GET
'CURLOPT_FOLLOWLOCATION' => true, // chceme-li následovat zadanou URL (přesměrování na danou url adresu)
'CURLOPT_PORT' => 80, // chceme-li nastavit port ručně
));
*/
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
---------- Příspěvek doplněn 09.04.2015 v 21:29 ----------
nicméně ještě musím dodat, že PHP musí obsahovat rozšíření curl (po vypsání phpinfo(); si vyhledej curl a pokud tam není, pak si ho musíš nainstalovat ....)
9. 4. 2015 21:27:44
https://webtrh.cz/diskuse/php-parser-file_get_contents/#reply1104986
Pro odpověď se přihlašte.
Přihlásit