Простой вопрос по PHP.

12
Einstein02
На сайте с 10.06.2009
Offline
164
869

Появился вопрос по коду на php. Код:

<?php


function get_yandex($url){

$ret = 'N/A';
include('download.php');

if( substr($url,0,7) != 'http://' )
$url = 'http://' . $url;

if( $content = get_download('http://ссылка') ){

if( class_exists('SimpleXMLElement') ){
if( $xmldoc = new SimpleXMLElement($content) ){
$tcy = $xmldoc->tcy;
if( !empty($tcy) ){
$ret = $tcy['value'];
}
}
}
else{
preg_match("/value=\"(.\d*)\"/",$content,$tic);
if( !empty($tic[1]) ) $ret = $tic[1];
}
}

return $ret;


}

?>

Как я понимаю, идёт проверка на совпадение кода

"value="тут искомая величина, которую нужно вывести"/"
. Как изменить скрипт, чтобы выполнялась проверка не на
"value="тут искомая величина, которую нужно вывести"/"
, а чтобы выводилось:
url="здесь искомая величина, которую нужно вывести"/>
?
Продвиженто (https://prodvizhento.com/) – агентство по созданию семантических ядер. SEO аудиты недорого Ссылка на скайп (skype:yablokoed?chat) | почта: mail[собака]prodvizhento.com | icq: 606-255-5три2
C
На сайте с 04.02.2005
Offline
291
#1

а что в download.php?

искать $content

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#2
Einstein02:
а чтобы выводилось:

Парсер bar-navig? Нужно основное зеркало?

<?php

print_r(get_yandex("forum.searchengines.ru"));
function get_yandex($url){
$ret = array();
//include('download.php');
if( substr($url,0,7) != 'http://' )
$url = 'http://' . $url;
if( $content = file_get_contents('http://bar-navig.yandex.ru/u?ver=2&show=32&url='.$url) ){

if( class_exists('SimpleXMLElement') ){
if( $xmldoc = new SimpleXMLElement($content) ){
$tcy = $xmldoc->tcy;
if( !empty($tcy) ){
$ret["tic"] = $tcy['value'];
}
$yaca = $xmldoc->yaca;
if( !empty($yaca) ){
$ret["url"] = $yaca['url'];
}
}
}
else{
preg_match("/value=\"(.\d*)\"/",$content,$tic);
if( !empty($tic[1]) ) $ret["tic"] = $tic[1];
preg_match("/yaca url=\"(.*)\"/",$content,$tic);
if( !empty($tic[1]) ) $ret["url"] = $tic[1];
}
}
return $ret;
}
?>
Einstein02
На сайте с 10.06.2009
Offline
164
#3
Ёхан Палыч:
http://bar-navig.yandex.ru/u?ver=2&show=32&url=

Верно. Всё исправил! Спасибо! Но увы теперь такая проблема: парситься может только около 50 сайтов, при вводе большого количества - проверка не выполняется...

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#4
Einstein02:
Верно. Всё исправил! Спасибо! Но увы теперь такая проблема: парситься может только около 50 сайтов, при вводе большого количества - проверка не выполняется...

Это не ко мне, а к Яндексу. Хотя, я в сутки 3-4млн запросов делаю и ничего.

Может ограничения при file_get_contents, у вас в download.php надеюсь curl?

Einstein02
На сайте с 10.06.2009
Offline
164
#5
Ёхан Палыч:
Это не ко мне, а к Яндексу. Хотя, я в сутки 3-4млн запросов делаю и ничего.
Может ограничения при file_get_contents, у вас в download.php надеюсь curl?

Вот этот файл:

<?php


function get_download($url){

$ret = false;

if( function_exists('curl_init') ){
if( $curl = curl_init() ){

if( !curl_setopt($curl,CURLOPT_URL,$url) ) return $ret;
if( !curl_setopt($curl,CURLOPT_RETURNTRANSFER,true) ) return $ret;
if( !curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30) ) return $ret;
if( !curl_setopt($curl,CURLOPT_HEADER,false) ) return $ret;
if( !curl_setopt($curl,CURLOPT_ENCODING,"gzip,deflate") ) return $ret;

$ret = curl_exec($curl);

curl_close($curl);
}
}
else{
$u = parse_url($url);

if( $fp = @fsockopen($u['host'],!empty($u['port']) ? $u['port'] : 80 ) ){

$headers = 'GET '. $u['path'] . '?' . $u['query'] .' HTTP/1.0'. "\r\n";
$headers .= 'Host: '. $u['host'] ."\r\n";
$headers .= 'Connection: Close' . "\r\n\r\n";

fwrite($fp, $headers);
$ret = '';

while( !feof($fp) ){
$ret .= fgets($fp,1024);
}

$ret = substr($ret,strpos($ret,"\r\n\r\n") + 4);

fclose($fp);
}
}

return $ret;
}


?>
Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#6

Я не использовал ваш download.php для простоты, верните в исходную:

<?php
print_r(get_yandex("forum.searchengines.ru"));

function get_yandex($url){
$ret = array();
include('download.php');
if( substr($url,0,7) != 'http://' )
$url = 'http://' . $url;
if( $content = get_download('http://bar-navig.yandex.ru/u?ver=2&show=32&url='.$url) ){

if( class_exists('SimpleXMLElement') ){
if( $xmldoc = new SimpleXMLElement($content) ){
$tcy = $xmldoc->tcy;
if( !empty($tcy) ){
$ret["tic"] = $tcy['value'];
}
$yaca = $xmldoc->yaca;
if( !empty($yaca) ){
$ret["url"] = $yaca['url'];
}
}
}
else{
preg_match("/value=\"(.\d*)\"/",$content,$tic);
if( !empty($tic[1]) ) $ret["tic"] = $tic[1];
preg_match("/yaca url=\"(.*)\"/",$content,$tic);
if( !empty($tic[1]) ) $ret["url"] = $tic[1];
}
}
return $ret;
}
?>

В curl желательно добавить список прокси и юзерагентов.

P.S. Для справки, может пригодится - поиск по зеркалам tcy.in выдает список зеркал в перевариваемом виде http://tcy.in/out/adresa.ru/

Einstein02
На сайте с 10.06.2009
Offline
164
#7
Ёхан Палыч:
В curl желательно добавить список прокси и юзерагентов.

Каким образом? Сорри в php не силён...:)

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#8
Einstein02:
Каким образом? Сорри в php не силён...

Ну тогда и не надо)

Einstein02
На сайте с 10.06.2009
Offline
164
#9
Ёхан Палыч:
Ну тогда и не надо)

Теперь когда ввожу большое количество сайтов - многие отображаются как N/A. В чём проблема?

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#10
Einstein02:
Теперь когда ввожу большое количество сайтов - многие отображаются как N/A. В чём проблема?

Смотрите что находится в $content

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий