Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> парсим данные с сайта 
:(
    Опции темы
GR0Mi
Дата 29.4.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть некий сайт. нужно спарсить от туда значения
вот мой код

Код

    $resp = $ua->post("http://сайт/index.php?search%5Bonline%5D=1&cityId=0&otherCity=&search%5Bgender%5D=w&search%5Bage%5D=15&search%5BageTo%5D=20")->as_string; #указываю параметр поиска 

               $resp = $ua->get("http://сайт/search/")->as_string;    #получаю страницу  с уже задаными параметрами
                 my ($pages) = $resp =~ /"buttn-last"><a rel="(\d+)"/; #Смотрим сколько всего найдено страниц
                       print "$pages\n";   
               $resp = $ua->get("http://сайт/search/")->as_string;   #идем на 1 страницу 
               wf($file, $resp);
               my ($ids) = $resp =~ /<div id="user(\d+)" class/; #парсим значение 
               print "$ids\n";


Собственно вопросы.
1. например найдено 10 страниц как сделать чтобы скрипт сначал шел на 1 парсил значения затем переходил на 2-3-4 и тд
2. мой скрипт пока парсит только 1 значение. как сделать чтобы парсил все что найдет на странице (от 5-10) значений

PM MAIL   Вверх
dmitryk1
Дата 29.4.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не вполне понял, как ты можешь заходить на определённую страницу, но тебе однозначно нужно цикл использовать.

В принципе можно после того, как определил количество страниц.


А внутри цикла:
Код


my $pg;
$resp = $ua->get("http://сайт/search/$pg")->as_string;   # в этой строке осуществлять вызов определённой страницы поиска.
               wf($file, $resp);
               my ($ids) = $resp =~ /<div id="user(\d+)" class/; #парсим значение 
               print "$ids\n";

PM MAIL GTalk Jabber   Вверх
GR0Mi
Дата 29.4.2010, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

my    $resp = $ua->post("http://site/index.php?search%5Bonline%5D=1&cityId=0&otherCity=&search%5Bgender%5D=w&search%5Bage%5D=15&search%5BageTo%5D=20")->as_string;

               $resp = $ua->get("http://site/search/")->as_string;
                
               
               my ($pages) = $resp =~ /"buttn-last"><a rel="(\d+)"/;
               
               
               print "$pages\n";
               
               while($xx<$pages) {
    print "$xx page \n";
    $xx++;

               $resp = $ua->get("http://site/search/?newOnly=0&online=1&cityId=0&gender=w&age=15&ageTo=20&marital=0&relAim%5B0%5D=0&page=$pages")->as_string;
               wf($file, $resp);
               my ($ids) = $resp =~ /<div id="user(\d+)" class/;
               print "$ids id usera\n";
    }



вроде должно получиться что то следующие
цикпл рабоатет пока хх меньше чем количество страниц
НО всеравно парсит только 1 значение а не все что есть на странице
и еще . 
ссылка на страницу
http://site/search/?newOnly=0&online=1...$pages
где $pages номер страници. подставил полное значение но ето не то. нужно чтобы начинало с 1 и заканчивало той которая стоит в $pages

Добавлено через 7 минут и 27 секунд
Код

print "$pg stranica \n";
               $resp = $ua->get("http://site/search/?newOnly=0&online=1&cityId=0&gender=w&age=15&ageTo=20&marital=0&relAim%5B0%5D=0&page=$pg")->as_string;
               wf($file, $resp);
               my ($ids) = $resp =~ /<div id="user(\d+)" class/;
               print "$ids id usera\n";
               $pg++ ;


переход по страницам сделал. 
тепеь главный вопрос. как сделать чтобы парсило все значения а не только 1?
PM MAIL   Вверх
shamber
Дата 29.4.2010, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



GR0Mi, ключик в регулярочке типа g?
PM MAIL Jabber   Вверх
GR0Mi
Дата 29.4.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



my ($ids) = $resp =~ /<div id="user(\d+)" class/g;

так?
чтот не работает
PM MAIL   Вверх
shamber
Дата 29.4.2010, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



GR0Mi, а циклик? Он ведь все равно в вашем случае с одним значением работает
PM MAIL Jabber   Вверх
GR0Mi
Дата 29.4.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



етот код внутри цикла. или еще цикл внутри цикла создать?
PM MAIL   Вверх
GR0Mi
Дата 4.5.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



пробывал создать еще цикл в нутри цикла. но всеравно парситься только 1 значение
PM MAIL   Вверх
dmitryk1
Дата 7.5.2010, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Так ты выводи значения ключевых переменных для отладки. 

$xx и $pages

И смотри. Если они правильные, выполняй в дебаггере по шагам и смотри на каком шаге или вылетает что-то или переменная меняется. И соответственно чини.

дебаггер хоть perl -d
PM MAIL GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

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


 




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


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

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