Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Парсинг выдачи Rambler и Apport
 
 автор: Volodja   (20.11.2005 в 07:42)   письмо автору
 
 

На форуме обсуждались парсинги практически всех поисковиков, но до парсера для 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. Может кто знает как кодировать русские запросы?

   
 
 автор: goddamn   (20.11.2005 в 09:59)   письмо автору
 
   для: Volodja   (20.11.2005 в 07:42)
 

что касается регов для тех поисковиков - давай исходный код - так легче придумывать :)

по второму вопросу :
это запрос в фотрмате UTF-8. посмотри исходный код страницы с результатами (charset) ...
используй
$normal_text = iconv('UTF-8','WINDOWS-1251',$original_text);

что-то типа того. смотри подробней описание iconv()

   
 
 автор: Volodja   (23.11.2005 в 06:21)   письмо автору
 
   для: 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>

   
 
 автор: cheops   (23.11.2005 в 13:00)   письмо автору
 
   для: Volodja   (23.11.2005 в 06:21)
 

Погодите... а нужен текст или ссылка? Лучше если вы приведёте ссылку на страницу и укажете какую точно информацию нужно вытащить - одну ссылку или все ссылки со страницы...

   
 
 автор: Volodja   (23.11.2005 в 16:52)   письмо автору
 
   для: 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 адресами в выдачи.

   
 
 автор: cheops   (24.11.2005 в 13:11)   письмо автору
 
   для: 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>"
  } 
?>

   
 
 автор: Volodja   (25.11.2005 в 07:43)   письмо автору
 
   для: 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

И точно так же с Рамблером.

   
 
 автор: cheops   (25.11.2005 в 18:24)   письмо автору
 
   для: 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 Рамблер чуть по позже выложу...

   
 
 автор: Volodja   (26.11.2005 в 07:11)   письмо автору
 
   для: cheops   (25.11.2005 в 18:24)
 

Работает, спасибо. Бду ждать рег. выражение для Рамблера.

   
 
 автор: cheops   (20.11.2005 в 14:03)   письмо автору
 
   для: 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);
  }
?>

   
 
 автор: goddamn   (20.11.2005 в 15:22)   письмо автору
 
   для: 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;

или я неправ ?

   
 
 автор: cheops   (20.11.2005 в 21:21)   письмо автору
 
   для: goddamn   (20.11.2005 в 15:22)
 

Возможно, могу врать, давненько с преобразованием не возился... помню только, что у меня необыло iconv() и это отняло у меня массу сил...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования