Подтвердить что ты не робот

Язык/библиотеки для загрузки и анализа веб-страниц?

Какой язык и библиотеки подходят для script для анализа и загрузки небольших номеров веб-ресурсов?

Например, некоторые веб-сайты публикуют псевдо-подкасты, но не как правильные RSS-каналы; они просто публикуют файл MP3 регулярно с веб-страницей, содержащей список воспроизведения. Я хочу написать script для регулярного запуска и разбора соответствующих страниц для информации о ссылках и плейлисте, загрузки MP3 и размещения плейлиста в тегах MP3, чтобы он хорошо отображался на моем iPod. Есть множество подобных приложений, которые я мог бы написать тоже.

Какой язык вы бы порекомендовали? Я хотел бы, чтобы script запускался в Windows и MacOS. Вот несколько альтернатив:

  • JavaScript. Просто чтобы я мог использовать jQuery для синтаксического анализа. Я не знаю, работает ли jQuery вне браузера.
  • Python. Возможно, хорошая поддержка библиотеки для того, чтобы делать то, что я хочу. Но я не люблю синтаксис Python.
  • рубин. Раньше я делал простые вещи (ручная разборка) в Ruby.
  • Clojure. Потому что я хочу провести с ним немного времени.

Какой ваш любимый язык и библиотеки для этого? И почему? Есть ли какие-нибудь красивые jQuery-подобные библиотеки для других языков?

4b9b3361

Ответ 1

Если вы хотите провести некоторое время с помощью Clojure (очень хорошая идея IMO!), дайте Enlive снимок. Описание GitHub читает

система шаблонов и преобразований на основе селектора (а-ля CSS) для Clojure - Подробнее

В дополнение к тому, чтобы быть полезным для шаблонов, это удобная библиотека webscraping; см. начальную часть этот учебник для некоторых простых примеров соскабливания. (Третья - домашняя страница Нью-Йорк Таймс, так что на самом деле это не так просто, как все.)

В Интернете есть другие учебные пособия, если вы их ищете; Enlive сам поставляется с некоторыми документами/примерами. (Кроме того, код составляет < 1000 строк в целом и очень читабельный, хотя, я полагаю, это может быть меньше для кого-то нового для этого языка.)

Ответ 2

Clojure связки дампов, охватывающие призыв, основанные на tagSoup и агенты для параллельных загрузок (roundups/link dumps не очень хороши, но я потратил некоторое время на поиск в Google/различные библиотеки. Spidering/crawling может быть очень простым или довольно активно в зависимости от структуры обходных сайтов, HTML, XHTML и т.д.)

http://blog.bestinclass.dk/index.php/2009/10/functional-social-webscraping/

http://nakkaya.com/2009/12/17/mashups-using-clojure/

http://freegeek.in/blog/2009/10/downloading-a-bunch-of-files-in-parallel-using-clojure-agents/

http://blog.maryrosecook.com/post/46601664/Writing-an-mp3-crawler-in-Clojure


http://gnuvince.wordpress.com/2008/11/18/fetching-web-comics-with-clojure-part-2/

http://htmlparser.sourceforge.net/

http://nakkaya.com/2009/11/23/converting-html-to-compojure-dsl/

http://www.bestinclass.dk/index.php/2009/10/functional-social-webscraping/


apache http client

http://github.com/rnewman/clj-apache-http

http://github.com/heyZeus/clj-web-crawler

http://japhr.blogspot.com/2009/01/clojure-http-clientclj.html

Ответ 3

Красивый суп (http://www.crummy.com/software/BeautifulSoup/) - хорошая библиотека для python для этого. Он специализируется на обработке неправильной разметки.

Ответ 4

В рубине у вас также есть Nokogiri, Nokogiri (鋸) - синтаксический анализатор HTML, XML, SAX и Reader. Среди нокогири многие функции - это возможность поиска документов с помощью селекторов XPath или CSS3.

Ответ 5

Как упоминалось в Mikael S hpricot - отличный синтаксический анализатор ruby ​​html. Тем не менее, для поиска страниц вы можете использовать библиотеку скриншотов экрана, например scRUBYt или Mechanize.

Ответ 6

Я настоятельно рекомендую использовать Ruby и hpricot библиотеку.

Ответ 7

Вы действительно должны дать Python снимок.

Когда я решаю создать искатель, я обычно воспроизвожу тот же шаблон.

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

  • Коннектор: объект Session из requests.
  • Loader: с несколькими threaded Погрузчики, несколько запросов могут быть запущены в кратчайшие сроки.
  • Parser: xpath интенсивно используется на каждом etree, созданный с помощью lxml.
  • Validator: набор утверждений и эвристик для проверки достоверности проанализированных данных.
  • Архиватор: в зависимости от того, что хранится, сколько и как быстро, но nosql часто является самым простым способом хранения извлеченных данных. Например, mongodb и pymongo.

Ответ 8

Я бы сделал это с PHP, curl и phpQuery.. но там много разных способов.

Ответ 9

Чего вы действительно хотите сделать? Если вы хотите узнать Clojure || ruby ​​|| C, сделайте это. Если вы просто хотите сделать это, сделайте то, что вам нужно быстрее. И, по крайней мере, когда вы говорите Clojure и библиотеку, вы также говорите о Java и библиотеке, есть много, а некоторые очень хорошие (я не знаю, каковы они есть). И то же самое было сказано для рубина и питона выше. Так что ты хочешь сделать?