Algumas coisas
Andrey

Lendo os resultados da Megasena direto do site da caixa

22/11/2016

php loteria megasena

Não sei o motivo, mas a caixa tentou dificultar um pouco o acesso aos resultados da megasena por meios automáticos.

1a parte - download usando o curl

$url = "megasena";
$class = "numbers mega-sena";

$c = curl_init();
$cookie_file = __DIR__.DIRECTORY_SEPARATOR."megasena.txt";
curl_setopt_array($c, array(
    CURLOPT_URL => "http://www.loterias.caixa.gov.br/wps/portal/loterias/landing/".$url,
    CURLOPT_REFERER => "http://www.loterias.caixa.gov.br",
    CURLOPT_USERAGENT => "Spider",
    CURLOPT_HEADER => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 6,
    CURLOPT_TIMEOUT => 6,
    CURLOPT_MAXREDIRS => 1,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_COOKIESESSION => true,
    CURLOPT_COOKIEFILE => $cookie_file,
    CURLOPT_COOKIEJAR => $cookie_file
));

try {
    $content = curl_exec($c);
    $data = curl_getinfo($c);
    $data["content"] = $content;
    unset($content);
    $data["errno"] = curl_errno($c);
    $data["errmsg"] = curl_error($c);
    if ((int)$data["errno"] !== 0 || (int)$data["http_code"] !== 200) {
        echo "error number: ".$data["errno"];
        echo "error message: ".$data["errmsg"];
        echo "http status: ".$data["http_code"];
        print_r($data);
        exit;
    }
} catch (HttpException $ex) {
    print_r($ex);
    exit;
}

curl_close($c); 

2a parte - identificação no html

$doc = new DOMDocument();
@$doc->loadHTML($data["content"]);
unset($data);

$tagsSorteio = $doc->getElementById("resultados");
$tagsSorteio = $tagsSorteio->getElementsByTagName("h2");
foreach ($tagsSorteio as $h2){

	$esteConcurso = trim(str_replace("Resultado Concurso" ,"",$h2->textContent));
	$esteConcurso = substr($esteConcurso, 0, 4);
	
	$posicao = strpos( $h2->textContent , "(") + 1;
	$estaData = substr($h2->textContent, $posicao, 10);
	$estaData = split("/", $estaData);
	$estaData = $estaData[2]."-".$estaData[1]."-".$estaData[0];
	
}



$tags = $doc->getElementsByTagName("ul");
$data = null;
foreach ($tags as $tag) {
    if ($tag->getAttribute("class") == $class) {
        $data = trim($tag->textContent);
        break;
    }
}
$arr = str_split($data, 2);
print_r($arr);