Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с регуляркой 
:(
    Опции темы
systemIV
Дата 31.8.2011, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 28.3.2011

Репутация: -1
Всего: -1



Давно не писал парсеров, а снипов или каких то примеров не осталось.
Помогите пожалуйста с регуляркой, вот что у меня вырисовывается, но ответ приходит нулевой.
Код

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://citycomfort.com.ua/');
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$indexPage = curl_exec($curl);
curl_close($curl);
preg_match_all('/<a href="http:\/\/citycomfort.com.ua\/?roomID=\d&city=\d">/iU', $indexPage, $content);
echo var_dump($content[0]);
?>

Подскажите, где здесь косяк?

Это сообщение отредактировал(а) systemIV - 31.8.2011, 11:39
PM ICQ Skype   Вверх
s0lman
Дата 31.8.2011, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



А что должно в итоге получиться?

Это сообщение отредактировал(а) s0lman - 31.8.2011, 12:02


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
systemIV
Дата 31.8.2011, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 28.3.2011

Репутация: -1
Всего: -1



Ну в итоге мне нужно отпарсить ссылки
PM ICQ Skype   Вверх
s0lman
Дата 31.8.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



как вариант
Код

/\<a href=("http:\/\/citycomfort.com\.ua\/[^ >]*)\>/is

как-то так


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
systemIV
Дата 31.8.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 28.3.2011

Репутация: -1
Всего: -1



s0lman, спасибо, помогло.
А вот ещё такой вопрос, как увеличить скорость??
Возможно я не так применяю парсер.
Его алгоритм примерно такой:
1. В цикле перебираю все страницы до последней
2. Инициализирую курл с УРЛ где подставляется номер страницы из цикла.
3. Из полученной страницы через регулярные выражения отбираю УРЛы на страницы.
4. Создаю цикл перебора полученых страниц, где также инициализирую ещё один экземпляр КУРЛа
5. Через регулярку во втором экземпляре записываю нужные мне данные в массив.

Возможно стоило бы заменить регулярки на простой реплейс, но может есть более очевидные техники?
PM ICQ Skype   Вверх
enoff
Дата 1.9.2011, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



по поводу регулярок и простых функций - по сравнению с тратами на скачивание страниц, время на разбор в разы меньше.

экземпляр курла можно оставить один, менять только url.

можно использовать multi_curl, запускать дочерние скрипты фоном и т.д., но жутко это все неудобно. если любыми целями требуется ускорить работу парсера, то придеться извращаться.
ну и ширину канала увеличить, самый заметный прирост будет.

и при больших объемах (да и вообще в подобных скриптах) лучше уничтожать данные, которые больше не нужны. курл и сам пять жрет не слабо, и данных можно много насобирать. лучше сразу делать, а потом сложновато будет исправлять, пхп он такой  smile 
PM MAIL ICQ Skype GTalk   Вверх
systemIV
Дата 10.9.2011, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 28.3.2011

Репутация: -1
Всего: -1



Не хотел создавать новый топик. 
Мне нужно из тега TITLE и с самой страницы получить инфу.
Хочу оформить это всё единой регуляркой. Но вот возник вопрос, ведь между тегом заголовка и инфой которую мне нужно получить огромное пространство. как можно обозначить весь этот ненужный контент в регулярке??
PM ICQ Skype   Вверх
voral
Дата 10.9.2011, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.3.2008
Где: Иваново

Репутация: нет
Всего: нет



А зачем именно одной?
Не достаточно данных для ответа. А каким выражением вы хотите найти данные "с самой страницы"? Имхо, тут надо рассматривать конкретный случай и подобрать подходящий механизм, чтоб ".*" не вобрало в  себя и нужный контент
PM MAIL WWW   Вверх
Absinthe
Дата 10.9.2011, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Есть такуя штука - профилирование(profiling). Она укажет, где косяк производительности. В данном случае в сети.

Цитата

А вот ещё такой вопрос, как увеличить скорость??
 Либо использовать асинхронные сокеты, либо переходить на другой язык и там использовать многопоточность(второй способ проще).


PM MAIL   Вверх
systemIV
Дата 12.9.2011, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 28.3.2011

Репутация: -1
Всего: -1



По совету перешёл на сокеты.
Но вопрос снова не в этом)
Как можно с помощью регулярки(желательно одной)
Код

<select name="RegionSeoTitle" onchange="onRegionChange(this);">
<option value="kiev" selected>Киев</option> 
<option value="vinnitsa">Винница</option> 
<option value="dnepropetrovsk">Днепропетровск</option> 
<option value="donetsk">Донецк</option> 
<option value="zhitomir">Житомир</option> 
<option value="zaporozhje">Запорожье</option> 
<option value="ivano-frankovsk">Ивано-Франковск</option> 
<option value="kirovograd">Кировоград</option> 
<option value="crimea">Крым</option> 
<option value="lugansk">Луганск</option> 
<option value="lutsk">Луцк</option> 
<option value="lvov">Львов</option> 
<option value="nikolaev">Николаев</option> 
<option value="odessa">Одесса</option> 
<option value="poltava">Полтава</option> 
<option value="rovno">Ровно</option> 
<option value="sumy">Сумы</option> 
<option value="ternopol">Тернополь</option> 
<option value="uzhgorod">Ужгород</option> 
<option value="kharkov">Харьков</option> 
<option value="herson">Херсон</option> 
<option value="hmelnitskij">Хмельницкий</option> 
<option value="cherkassy">Черкаcсы</option> 
<option value="chernigov">Чернигов</option> 
<option value="chernovtsy">Черновцы</option>
</select>


Получить массив этих строк
Код

<option value="(.*?)">(.*?)</option>


Это сообщение отредактировал(а) systemIV - 12.9.2011, 18:01
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1991 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.