2016-12-18 2 views
0

Я пытаюсь очистить kickasstorrents с помощью простого html dom, но я получаю сообщение об ошибке, и я еще не начал работу. Я последовал за некоторыми простыми учебниками html, и я настроил свой url и использовал curl.Попытка сцарапать kickasstorrents с помощью простого html dom

код выглядит следующим образом:

<?php 
require('inc/config.php'); 
include_once('inc/simple_html_dom.php'); 

function scrap_kat() { 

// initialize curl 
$html = 'http://katcr.to/new/'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $html); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
$ip=rand(0,255).'.'.rand(0,255).'.'.rand(0,255).'.'.rand(0,255); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "HTTP_X_FORWARDED_FOR: $ip")); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/".rand(3,5).".".rand(0,3)." (Windows NT ".rand(3,5).".".rand(0,2)."; rv:2.0.1) Gecko/20100101 Firefox/".rand(3,5).".0.1"); 
$html2 = curl_exec($ch); 
if($html2 === false) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{ 
    // create HTML DOM 
    $kat = file_get_contents($html); 
} 
curl_close($ch); 

// scripting starts 




// clean up memory 
$kat->clear(); 
unset($kat); 
// return information 
return $ret; 

} 
$ret = scrap_kat(); 
echo $ret; 
?> 

Я получаю ошибку

Fatal error: Call to a member function clear() on resource in C:\wamp64\www\index.php on line 36

Что я делаю не так? Спасибо.

+0

Я могу подтвердить, что на этой странице дроссели простого html-dom. Вы можете [попробовать это как замену] (https://github.com/monkeysuffrage/advanced_html_dom). – pguardiario

ответ

0

Simple_html_dom класс. В этом классе может быть вызов функции, ясный или он находится в классе Simple_html_dom_node. Но в простом html dom вам нужно использовать класс simple_html_dom.

@ Hassaan, это правильно. file_get_contents - это родная функция php, вам нужно создать объект класса simple_html_dom. Например,

$html = new simple_html_dom(); 

И используйте этот ниже код.

function scrap_kat() { 
$url = 'http://katcr.to/new/'; 
// $timeout= 120; 
# create object 
$html = new simple_html_dom(); 
#### CURL BLOCK #### 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/".rand(3,5).".".rand(0,3)." (Windows NT ".rand(3,5).".".rand(0,2)."; rv:2.0.1) Gecko/20100101 Firefox/".rand(3,5).".0.1"); 
//curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); 
$ip=rand(0,255).'.'.rand(0,255).'.'.rand(0,255).'.'.rand(0,255); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "HTTP_X_FORWARDED_FOR: $ip")); 
$content = curl_exec($curl); 
curl_close($curl); 
# note the variable change. 
# load the curl string into the object. 
$html->load($content); 
//echo $ip; 
#### END CURL BLOCK #### 
print_r($html->find('a')); 
// clean up memory 
$html->clear(); 
unset($html); 
} 
scrap_kat(); 

У вас много ошибок в вашем коде, поэтому я просто расскажу вам, как вы можете это сделать. Если это необходимо, прокомментируйте ниже этот ответ. Я буду.

0

file_get_contents - встроенная функция PHP. Для простой HTML DOM вы можете использовать file_get_html

Заменить

$kat = file_get_contents($html); 

с

$kat = file_get_html($html); 

Почему вы возвращаете $ret; как ваш код в ваш вопрос. Там нет переменной $ret в вы действуете scrap_kat()

Вы можете вернуть $kat вместо $ret и не unset($kat);

+0

Я пробовал другой подход. –

+0

Я пробовал другой подход, если вы перейдете к: http://pastebin.com/CD8M9eiF и увидите ... Теперь я получаю: C: \ wamp64 \ www \ index.php: 40: null при выполнении var_dump, так что ничего не получается ... какие-то идеи? –

Смежные вопросы