Я делаю некоторые скребки с php. Я извлекал данные, включая ссылку на следующую соответствующую страницу, так что все это автоматически. Проблема в том, что я, кажется, получаю страницу, которая немного изменена по сравнению с тем, что я ожидаю использовать с этим URL-адресом в моем браузере (например, даты разные).
Я попытался использовать curl и get_file_contents, но оба получили неправильный файл.
На данный момент я использую:
$url = "http://www.example.com"; $ch = curl_init(); $timeout = 5; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); url_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $temp = curl_exec($ch); curl_close($ch);
Что здесь происходит?
ОБНОВИТЬ:
Я попытался имитировать браузер, используя следующий код, но все же безуспешно. Я нахожу это странным.
function get_url_contents($url){ $crl = curl_init(); $timeout = 10; $header=array( 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: en-us,en;q=0.5', 'Accept-Encoding: gzip,deflate', 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Keep-Alive: 115', 'Connection: keep-alive', ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt ($crl, CURLOPT_URL,$url); curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($crl, CURLOPT_AUTOREFERER, FALSE); curl_setopt ($crl, CURLOPT_FOLLOWLOCATION, FALSE); $ret = curl_exec($crl); curl_close($crl); return $ret; }
Дальнейшее обновление:
Кажется, что сайт использует мое местоположение для дискриминации. Есть ли вариант локали?