|
|
|
| На форуме обсуждались парсинги практически всех поисковиков, но до парсера для Rambler и Apport так и не дошли. Какие регулярные выражения для этих поисковиков нужно использовать для выдирания всех url в выдачи?
И еще столкнулся с одной проблемой пока в MSN и Yahoo. Когда ищещь по русскому запросу, запрос как-то кодируется (например для слова "сайт" - %D1%81%D0%B0%D0%B9%D1%82, для слова "машина" - %D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0), не через rawurlencode. Может кто знает как кодировать русские запросы? | |
|
|
|
|
|
|
|
для: Volodja
(20.11.2005 в 07:42)
| | что касается регов для тех поисковиков - давай исходный код - так легче придумывать :)
по второму вопросу :
это запрос в фотрмате UTF-8. посмотри исходный код страницы с результатами (charset) ...
используй
$normal_text = iconv('UTF-8','WINDOWS-1251',$original_text);
|
что-то типа того. смотри подробней описание iconv() | |
|
|
|
|
|
|
|
для: goddamn
(20.11.2005 в 09:59)
| | Для Рамблера:
<li><div class="ttl"><a onclick="R(this, 'r=035674BA')" href="http://www.registratura.ru/register/russearch/m2_1.html" target=_blank>РЕГИСТРАТУРА. Регистрация на русских поисковиках</a></div>
<li><div class="ttl"><a onclick="R(this, 'r=56ECE5E1')" href="http://design.lafa.ru/" target=_blank>Web дизайн, создание <B>сайта</B>. О НАС. Продвижение сайта.</a></div>
Т.е. получается нужно выражение для этого куска:
<div class="ttl"><a onclick="R(this, 'r=56ECE5E1')" href="http://design.lafa.ru/" target=_blank>, где r любая семизначная цыфра или буква
Для Аппорта:
<span class=title><a href="http://www.fanion.ru/" target=_blank>Fanion.ru - интернет-магазин стиральных <b>машин</b>, информация о стиральных <b>машинах</b></a></span>
<span class=title><a href="http://www.aport.ru/" target=_blank>Апорт - поисковая <b>машина</b> и универсальный каталог интернет-ресурсов</a></span>
Т.е. нужно регулярное выражение для этого куска:
<span class=title><a href="http://www.fanion.ru/" target=_blank> | |
|
|
|
|
|
|
|
для: Volodja
(23.11.2005 в 06:21)
| | Погодите... а нужен текст или ссылка? Лучше если вы приведёте ссылку на страницу и укажете какую точно информацию нужно вытащить - одну ссылку или все ссылки со страницы... | |
|
|
|
|
|
|
|
для: cheops
(23.11.2005 в 13:00)
| | Нужно получить только все ссылки из HTML кода:
Для Аппорта из:
<span class=title><a href="http://www.fanion.ru/" target=_blank>
например - http://sm.aport.ru/scripts/template.dll?That=std&r=%EC%E0%F8%E8%ED%E0
Для Рабмблера:
<div class="ttl"><a onclick="R(this, 'r=56ECE5E1')" href="http://design.lafa.ru/" target=_blank>, где r любая семизначная цыфра или буква
например - http://www.rambler.ru/cgi-bin/counter_search?words=%EC%E0%F8%E8%ED%E0&set=top100&old_q=cbrf.magazinfo.ru&btnG=%CD%E0%E9%F2%E8%21
Как и в предыдущих обсуждениях регулярных выражений для поисковиков нужно получить массив с URL адресами в выдачи. | |
|
|
|
|
|
|
|
для: Volodja
(23.11.2005 в 16:52)
| | По Aport имеется ввиду следующий скрипт?
<?php
$text = file_get_contents("http://sm.aport.ru/scripts/template.dll?That=std&r=%EC%E0%F8%E8%ED%E0");
$pattern = "|<li value=[\d]+>[^>]+><a href=\"([^\"]+)\"[^>]+>(.*)</a>|isU";
preg_match_all($pattern,$text,$out);
for($i = 0; $i < count($out[1]); $i++)
{
echo "<a href=".$out[1][$i].">".$out[2][$i]."</a><br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.11.2005 в 13:11)
| | Не, немного не так, нужно получить только url с выдачи без названия ссылок.
Т.е. я должен был получить в массиве следующее:
http://www.auto.vl.ru
http://www.aport.ru
http://www.aqualon.ru
http://www.office-world.ru/catalog/bookbinders
http://www.holodilnik.ru
http://ust-bt.narod.ru
http://punto.ru
http://www.ndk-elektrosila.ru
http://glavrembyt-hd.narod.ru
http://www.apostrof-print.ru
И точно так же с Рамблером. | |
|
|
|
|
|
|
|
для: Volodja
(25.11.2005 в 07:43)
| | Ну это уже дело техники - просто выводите одну ссылку без текста
<?php
$text = file_get_contents("http://sm.aport.ru/scripts/template.dll?That=std&r=%EC%E0%F8%E8%ED%E0");
$pattern = "|<li value=[\d]+>[^>]+><a href=\"([^\"]+)\"[^>]+>(.*)</a>|isU";
preg_match_all($pattern,$text,$out);
for($i = 0; $i < count($out[1]); $i++)
{
echo $out[1][$i]."<br>";
}
?>
|
PS Рамблер чуть по позже выложу... | |
|
|
|
|
|
|
|
для: cheops
(25.11.2005 в 18:24)
| | Работает, спасибо. Бду ждать рег. выражение для Рамблера. | |
|
|
|
|
|
|
|
для: Volodja
(20.11.2005 в 07:42)
| | Этому безобразию (%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0) нет соответствующей функции в PHP - это чистый UTF-8, в котором \x заменён на %. Для преобразования необходимо либо сначала осуществить замену % на \x либо воспользоваться функцией вида
<?php
// Функция преобразования текста из кодировки cp-1251 (Windows)
// в UTF-8 в формате Google
function win_utf8($str)
{
$win = array("а","б","в","г","д","е","ё","ж","з","и",
"й","к","л","м","н","о","п","р","с","т",
"у","ф","х","ц","ч","ш","щ","ъ","ы","ь",
"э","ю","я","А","Б","В","Г","Д","Е","Ё",
"Ж","З","И","Й","К","Л","М","Н","О","П",
"Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ",
"Ъ","Ы","Ь","Э","Ю","Я"," ");
$utf8 = array("%D0%B0","%D0%B1","%D0%B2","%D0%B3","%D0%B4",
"%D0%B5","%D1%91","%D0%B6","%D0%B7","%D0%B8",
"%D0%B9","%D0%BA","%D0%BB","%D0%BC","%D0%BD",
"%D0%BE","%D0%BF","%D1%80","%D1%81","%D1%82",
"%D1%83","%D1%84","%D1%85","%D1%86","%D1%87",
"%D1%88","%D1%89","%D1%8A","%D1%8B","%D1%8C",
"%D1%8D","%D1%8E","%D1%8F","%D0%90","%D0%91",
"%D0%92","%D0%93","%D0%94","%D0%95","%D0%81",
"%D0%96","%D0%97","%D0%98","%D0%99","%D0%9A",
"%D0%9B","%D0%9C","%D0%9D","%D0%9E","%D0%9F",
"%D0%A0","%D0%A1","%D0%A2","%D0%A3","%D0%A4",
"%D0%A5","%D0%A6","%D0%A7","%D0%A8","%D0%A9",
"%D0%AA","%D0%AB","%D0%AC","%D0%AD","%D0%AE",
"%D0%AF","+");
return str_replace($win, $utf8, $str);
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.11.2005 в 14:03)
| | http://php.rinet.ru/manual/ru/function.iconv.php
$text = "%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0"; // машина
$text = iconv('UTF-8','WINDOWS-1251',rawurldecode($text));
echo $text;
|
или я неправ ? | |
|
|
|
|
|
|
|
для: goddamn
(20.11.2005 в 15:22)
| | Возможно, могу врать, давненько с преобразованием не возился... помню только, что у меня необыло iconv() и это отняло у меня массу сил... | |
|
|
|
|