Что самый легкий путь состоит в том, чтобы программно извлечь структурированные данные из набора веб-страниц?

Что самый легкий путь состоит в том, чтобы программно извлечь структурированные данные из набора веб-страниц?

Я в настоящее время использую программу Adobe AIR, которую я записал, чтобы перейти по ссылкам на одной странице и захватить раздел данных прочь последующих страниц. Это на самом деле хорошо работает, и для программистов я думаю, что это (или другие языки) обеспечивает разумный подход, чтобы быть записанным на индивидуальной основе. Возможно, существует определенный язык или библиотека, которая позволяет программисту делать это очень быстро, и раз так я интересовался бы знанием, каковы они.

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

7
задан dennisjtaylor 18 December 2009 в 19:42
поделиться

6 ответов

Если вы выполните поиск в Stackoverflow для WWW :: Mechanize и pQuery , вы увидите множество примеров, использующих эти Perl CPAN ] модулей.

Однако, поскольку вы упомянули "непрограммист", возможно, Web :: Scraper модуль CPAN может быть более подходящим? Это больше похоже на DSL , и поэтому, возможно, "непрограммисту" его легче понять.

Вот пример из документации для получения твитов из Twitter:

use URI;
use Web::Scraper;

my $tweets = scraper {
    process "li.status", "tweets[]" => scraper {
        process ".entry-content",    body => 'TEXT';
        process ".entry-date",       when => 'TEXT';
        process 'a[rel="bookmark"]', link => '@href';
    };
};

my $res = $tweets->scrape( URI->new("http://twitter.com/miyagawa") );

for my $tweet (@{$res->{tweets}}) {
    print "$tweet->{body} $tweet->{when} (link: $tweet->{link})\n";
}
11
ответ дан 6 December 2019 в 14:04
поделиться

Я обнаружил, что YQL очень мощный и полезный инструмент для такого рода вещей. Вы можете выбрать любую веб-страницу в Интернете, и она сделает ее действительной, а затем позволит вам использовать XPATH для запроса ее частей. Вы можете вывести его как XML или JSON, готовый для загрузки в другой сценарий / приложение.

Я написал свой первый эксперимент с ним здесь:

http://www.kelvinluck.com/2009/02/data-scraping -with-yql-and-jquery /

С тех пор YQL стал более мощным за счет добавления ключевого слова EXECUTE, которое позволяет вам написать свою собственную логику на javascript и запустить ее на Yahoo! s серверов, прежде чем возвращать вам данные.

Более подробное описание YQL здесь .

Вы можете создать базу данных для YQL, чтобы получить основную информацию, которую вы пытаетесь получить а затем человек, отвечающий за сбор данных, может написать очень простые запросы (в DSL, который довольно много английский) к этой таблице. Им было бы легче, чем "правильное программирование" хотя бы ...

2
ответ дан 6 December 2019 в 14:04
поделиться

Если вы не возражаете, что он захватит ваш компьютер, и вам понадобится поддержка javasript, WatiN - чертовски хороший инструмент для просмотра веб-страниц. Написанный на C #, в прошлом он был очень надежным для меня, предоставляя красивую независимую от браузера оболочку для просмотра и получения текста со страниц.

0
ответ дан 6 December 2019 в 14:04
поделиться

Существует Sprog , который позволяет графически строить процессы из частей (Получить URL -> Таблица HTML процесса -> Записать файл), и вы можете поместить код Perl в любой этап процесса или напишите свои собственные части для непрограммистов. Он выглядит немного заброшенным, но все равно работает хорошо.

2
ответ дан 6 December 2019 в 14:04
поделиться

Я использую комбинацию Ruby с hpricot и watir очень эффективно выполняет свою работу

0
ответ дан 6 December 2019 в 14:04
поделиться

Являются ли коммерческие инструменты жизнеспособными ответами? Если да, то посмотрите http://screen-scraper.com/, это очень легко настроить и использовать для отскребания веб-сайтов. У них есть бесплатная версия, которая на самом деле довольно полная. И нет, я не связан с компанией :)

0
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: