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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить "about us" страницу и мета-теги, подобие wget или web data extractor 6.0 
:(
    Опции темы
LisaST
Дата 26.2.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Описание задачи, 

нужно составить коллекцию текстов описаний того, чем занимается фирма (в основном страница "about us", около1000 фирм) на английском языке. Текст должeн быть предствален в формате .тхт 

Я пыталась решить эту задачу в Wget и lynx

например wget -r -l1 -H -A txt http://www.xxxxxxx.xxx

ничего хорошего из этого не вышло :( получила несколько страниц index.html, но не секцию "about us". Пробовала также с опцией wget -A "*about*"

Поискала тут на форуме похожие примеры, но везде описывается,как загрузить 1 .хтмл страницу,а мне нужно например автоматизировать этот процесс (как в wget recursive download).

Модулями пользоваться не умею, т.к. не программист (при поиске было указание использовать ::LWP)..
вот тут например решение (но мне надо на большое количество страниц)

Primer poluchenija stranic 

еще вопрос,т.к. информация на "about us" не всегда преставленя в виде текста, была идея загружат мета-теги со страниц фирм (Description и Content), но тоже не знаю как это можно реализовать.

нашла пример, но пока не на чен тестировать (проблема с множественным получением хтмл страниц)

grep '<META name="description"' | sed -e 's,<META name="description" content=",,' | sed -e 's/">//' | awk '{sub("\r$","");print}'`




спасибо зарание
PM MAIL   Вверх
amg
Дата 26.2.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



LisaST, советую попробовать lynx -dump URL > file.txt. Это, наверное, лучший из известных мне способов получить красивый текст из html-страницы. 

Кроме того, в составе библиотеки libwww-perl (это и есть модуль LWP) есть несколько уже готовых скриптов, вполне функциональных, с подробным описанием. Просто воспользуйтесь ими.
PM MAIL   Вверх
LisaST
Дата 26.2.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(amg @ 26.2.2008,  13:36)
LisaST, советую попробовать lynx -dump URL > file.txt. Это, наверное, лучший из известных мне способов получить красивый текст из html-страницы. 

Кроме того, в составе библиотеки libwww-perl (это и есть модуль LWP) есть несколько уже готовых скриптов, вполне функциональных, с подробным описанием. Просто воспользуйтесь ими.

dump функцию тоже уже пробовала..проблема в том,что lynx это по сути браузер и не позволяет автоматизировать процесс (задать более 100 URL например)

можно мне ссылку на пример использования LWP для множества ссылок

ps нашла webplack, вроде бы должен подходить для этой цели, попробую сегодня вечером

Это сообщение отредактировал(а) LisaST - 26.2.2008, 15:32
PM MAIL   Вверх
trigger
Дата 26.2.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну вот еще  - когдато делалось. если коечто переделать и использовать советы бывалых и настроить для себя, то сто пудов получится.

вот еще пример рекурсивного обхода - но он отваливается  smile  
PM MAIL WWW ICQ   Вверх
LisaST
Дата 26.2.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



применила w3mir, загружает много хтмл страниц, из которых надо удалять все теги. Решить задачу, как загружать только about us страницы пока не удалось

--------
пытаюсь избавиться от всех тегов и комментариев (нужен только текст) в файлах загруженных с помощью w3mir

подскажите, почему не работает такой способ

пытаюсь сконкатенировать все .асп файлы в директории и передать их программке..получаю пустой файл test1

$ cat *.asp | perl TAG_rm.pl > test1.txt

где что надо поменять?

perl TAG_rm.pl

Код

#!/usr/bin/perl -w

use strict;

my $document;
my $formatter;
my $html;
my $return;

sub html_to_ascii {
use HTML::TreeBuilder;
use HTML::FormatText;
$document = $_[0];
$html = HTML::TreeBuilder->new();
$html->parse($document);
$formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 0);
$return = $formatter->format($html);
return $return;

}





Это сообщение отредактировал(а) LisaST - 27.2.2008, 01:36
PM MAIL   Вверх
LisaST
Дата 1.3.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



пробовала также избавиться от Тегов с помощью

Код


#!/usr/bin/perl -w
use HTML::Strip;
use strict;

sub RemoveTags {


my $raw_html =("INDEX.txt");
my $hs = HTML::Strip->new();
  
print $hs->parse( $raw_html );
  
  
}

в файле  > stripped.txt, в который передаю через пайп результат получаю толко одно слово INDEX.txt, как "заставить" программу работать? очень нужен ответ  

также вместе файла пробовала вставить get("http://websitename.com") получаю ошибку 
Undefined subroutine &main::get called at strip_tags.pl line 12.


Это сообщение отредактировал(а) LisaST - 1.3.2008, 20:55
PM MAIL   Вверх
KSURi
Дата 2.3.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(LisaST @  1.3.2008,  20:54 Найти цитируемый пост)
my $raw_html =("INDEX.txt");

ого, а это что за хитрая конструкция?)
perldoc -f open


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
LisaST
Дата 2.3.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



no comments smile

разобралась с открытием файла

Код

#!/usr/bin/perl

use HTML::Strip;

my $hs = HTML::Strip->new();

open(FILE, "INDEX.txt") or die "can't open file";

while ($line = <FILE>)
{
my $clean_text = $hs->parse( $line );
print $clean_text;
}
$hs->eof;


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


Эксперт
***


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

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



Цитата(LisaST @  26.2.2008,  15:20 Найти цитируемый пост)
проблема в том,что lynx это по сути браузер и не позволяет автоматизировать процесс (задать более 100 URL например)
Почему же не позволяет. Любая программа, запускающаяся из командной строки и отрабатывающая без вмешательства человека, позволяет легко автоматизировать процесс. А то что lynx это браузер - в данном случае большой плюс, т.к. он может не просто удалить html-тэги, но и выдать красиво отформатированный текст.
Код

my @URLs = qw(
http://www.cafepress.com/cp/info/about/
http://www.canada.com/aboutus/index.html
http://www.cnn.com/about/
);
foreach (@URLs) {
  (my $filename) = /(?:http:\/\/)?([^\/]+)/;
  system ("lynx -dump -nolist $_ > $filename");
}



PM MAIL   Вверх
LisaST
Дата 5.3.2008, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо,

но в Вашем примере получается, что надо заведомо скармливать  линки, которые референцируют не на главную страницу фирмы (например автоматически полученные линки из dmoz.org), а саму "about us" страницу, кот. надо сначала найти вручную и скопировать линк для lynx, если я таким  образом хочу получить 500 и более страниц, получается, что мне надо найти 500 описаний фирмы вручную и скормить их lynx.

пока я делала так 
1.lynx -dump "http://www.compcatalogue.com/" | egrep -o "http:.*" > mylinks.txt
2.wget -r -l2 -H -t1 -nd -np (-A.html) -erobots=off -i mylinks.txt
3.strip_tags.p

еще пыталась что-то сделать с imacros для Firefox, там можно настроить браузер для получения только текста со страниц, но получила не очень хорошие результаты
PM MAIL   Вверх
amg
Дата 5.3.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Если имеется список главных страниц, и на них есть ссылки на "About Us", то можно попытаться автоматизировать процесс:
Код

@URLs = qw(
http://www.cafepress.com
http://www.canada.com
http://www.cnn.com
);
foreach $url (@URLs) {
  $text = `lynx -dump $url`;
  if ($text =~ /\[(\d+)\]\[?about/i) {
    ($about_link) = $text =~ /^\s*$1\. (.+)/m;
    print "$about_link\n";
    ($filename) = $url =~ /(?:http:\/\/)?([^\/]+)/;
    system ("lynx -dump -nolist $about_link > $filename");
  }
}

PM MAIL   Вверх
LisaST
Дата 5.3.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



получаю файлы в странном формате (binary), которые распознаются как DOS-Application и которые невозможно скопировать в виде текста

пример

00 набор цифр текст
01 етц

PM MAIL   Вверх
amg
Дата 6.3.2008, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(LisaST @  5.3.2008,  21:34 Найти цитируемый пост)
получаю файлы в странном формате
Пожалуйста, пример сайта, на котором такое получается.

PM MAIL   Вверх
LisaST
Дата 8.3.2008, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#!/usr/bin/perl

@URLs = qw(
http://www.alfakleen.com/   
http://www.glotex.com/   
http://www.luentai.com/   
http://www.pyleaudio.com/   
http://www.beyochem.com/   
http://www.radiform.com/   
http://www.jklclothing.co.uk/   
http://www.completfarma.com/  
);
foreach $url (@URLs) {
  $text = `lynx -dump $url`;
  if ($text =~ /\[(\d+)\]\[?about/i) {
    ($about_link) = $text =~ /^\s*$1\. (.+)/m;
    print "$about_link\n";
    ($filename) = $url =~ /(?:http:\/\/)?([^\/]+)/;
    system ("lynx -dump -nolist $about_link > $filename");
  }
}


из этох сайтов получила 2 файлa, по-поводу формата см. пред. пост
PM MAIL   Вверх
amg
Дата 10.3.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



LisaST, попробовал. Те два сайта, для которых странички "About Us" скачиваются, у меня получаются вполне нормально, за исключением, может быть, кусков, содержащих иероглифы. Что касается остальных, которые не скачиваются, тут, IMHO, не обойтись без следующей процедуры. 
Во-первых, скачивать главные странички не в виде текста, а html-код. 
Во-вторых, надо набрать статистику, в каком контексте в html-коде главных страничек обычно присутствует ссылка на "About Us". При этом для получения html-кода главных страничек можно использовать что-то вроде 
Код

system "wget -k -O index.html $url"; # -k превращает относительные ссылки в абсолютные
$html = `lynx -source -preparsed index.html`; # -preparsed унифицирует html-код
Например, в случае http://www.alfakleen.com/ получится 
Код

<AREA ALT="About Us" COORDS="585, 68, 669, 87"
HREF="http://www.alfakleen.com/Company_Profile/company_profile.html"
SHAPE="RECT">
И наконец, сгруппировать родственные случаи и придумать для каждой группы регулярное выражение. 
Муторная работа, конечно, но другого пути не вижу.
PM MAIL   Вверх
LisaST
Дата 3.4.2008, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо за советы, так как все надо было сделать очень срочно, решила все таким путем:

в гугле поиск по "about us"
http://www.google.com/views?q=about+us+vie...tBarTopViewTabs

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


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

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


 




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


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

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