Мне нужно отобразить некоторые значения, которые хранятся на веб-сайте, для чего мне нужно очистить веб-сайт и получить содержимое из таблицы. Любые идеи?
Как я могу скринировать экран с помощью Perl?
Ответ 1
Если вы знакомы с jQuery, вы можете проверить pQuery, что делает это очень просто:
## print every <h2> tag in page
use pQuery;
pQuery("http://google.com/search?q=pquery")
->find("h2")
->each(sub {
my $i = shift;
print $i + 1, ") ", pQuery($_)->text, "\n";
});
Там также HTML:: DOM.
Однако, что бы вы ни делали, не используйте для этого регулярные выражения.
Ответ 2
Я использовал HTML Table Extract в прошлом. Мне лично это немного неудобно использовать, но, может быть, я не очень хорошо понял объектную модель. Я обычно использую эту часть руководства для изучения данных:
use HTML::TableExtract;
$te = HTML::TableExtract->new();
$te->parse($html_string);
# Examine all matching tables
foreach $ts ($te->tables) {
print "Table (", join(',', $ts->coords), "):\n";
foreach $row ($ts->rows) {
print join(',', @$row), "\n";
}
}`
Ответ 3
Хотя я вообще делал это с помощью LWP/LWP:: Simple, текущий "предпочтительный" модуль для любой сортировки веб-страниц в Perl - WWW:: Mechanize.
Ответ 4
Если вы знакомы с XPath, вы также можете использовать HTML:: TreeBuilder:: XPath. И если вы не... ну, вы должны быть: -)
Ответ 5
Для подобных вопросов, связанных с Stackoverflow, посмотрите...
- Как извлечь URL-адреса с веб-страницы на Perl
- Как я могу извлечь XML-сайт и сохранить файл в Perl LWP?
Мне нравится использовать pQuery для подобных вещей, однако Web:: Скребок действительно интересен.
Ответ 6
Вы также можете использовать этот простой модуль perl WEB:: Scraper, это просто понять и сделать жизнь легкой для меня. следуйте этому примеру для получения дополнительной информации.
http://teusje.wordpress.com/2010/05/02/web-scraping-with-perl/
Ответ 7
Я не собираюсь перетаскивать мертвую нить, но кто-то, отправляющийся по этой теме, должен также проверять WWW:: Scripter - 'Для скриптовые веб-сайты со сценариями
счастливое удаленное агрегирование данных;)
Ответ 8
Взгляните на магический Web:: Scraper, он Инструмент для веб-соскабливания. p >
Ответ 9
Я использую LWP:: UserAgent для большинства моих проблем с очисткой экрана. Вы также можете связать это с HTTP:: Cookies, если вам нужна поддержка Cookies.
Вот простой пример того, как получить источник.
use LWP;
use HTTP::Cookies;
my $cookie_jar = HTTP::Cookies->new;
my $browser = LWP::UserAgent->new;
$browser->cookie_jar($cookie_jar);
$resp = $browser->get("https://www.stackoverflow.com");
if($resp->is_success) {
# Play with your source here
$source = $resp->content;
$source =~ s/^.*<table>/<table>/i; # this is just an example
print $source; # not a solution to your problem.
}
Ответ 10
Посмотрите этот небольшой пример веб-соскабливания с помощью perl: текст ссылки