Я пытаюсь найти способ получить 4 - 5 строк текста с нескольких страниц одного и того же сайта, информация всегда находится в одном и том же месте на веб-странице. Как мне получить эту информацию в текстовом или, предпочтительно, в файле Excel?
3 ответа
Традиционно вы загружаете страницы HTML и ищете некоторую константу, которая непосредственно предшествует вашим данным. к сожалению, ваш вопрос не имеет универсального ответа, так как каждый сайт отличается. Я написал скрипты на python, Bash и даже на C #, которые раскрывают страницу, ищут нужный тег и извлекают его.
Взгляните на источник страниц и найдите свой кусок данных (для этого очень полезен firebug) и определите начальный и конечный разделители для контента, который вы хотите извлечь.
Вот несколько сценариев, которые люди написали для чистки XKCD.com http://forums.xkcd.com/viewtopic.php?f=11&t=63037
Вы можете попытаться очистить страницу, используя Javascript (в форме скрипта Greasemonkey / Userscript / расширения / букмарклета / ...). Букмарклет означает, что вам нужно вручную перейти на эту страницу и выполнить ее. Другие методы позволяют передавать данные прямо в вашу базу данных (локальное хранилище при использовании привилегированного расширения или веб-сервера).
Написание кода Javascript требует знаний в этой области, вы должны искать такие функции DOM, как document.getElementById
, getElementsByClassName
и querySelector
или XPath. Поскольку Etsy уже использует jQuery, вы также можете использовать jQuery для получения данных.
В качестве альтернативы очистке рассмотрите возможность использования API, если он доступен. Быстрый поиск выявил следующие страницы, которые могут (или не могут) помочь вам:
Это во многом зависит от того, в какой области находится ваш опыт, но в прошлом для такого рода операций я обычно использовал PHP Simple HTML DOM Parser. Он действительно прост в использовании, а документация довольно информативна.
Синтаксис для запроса DOM довольно похож на jQuery, если вы использовали это раньше.
Вы можете использовать более подробный find('div[id=foo]');
и find('div[class=bar]');
но может также использовать более компактный jQuery-подобный метод определения селекторов с помощью find('#foo');
и find('.bar');
,
Я лично использую Chrome Inspector для определения элементов, которые я хочу запросить, чтобы найти их идентификатор, класс, тег и т.д.
Имейте в виду, что существует небольшая вероятность того, что вы можете столкнуться с ошибками памяти в зависимости от размера файла, который вы намереваетесь загрузить в память, но если страница похожа на ту, что на скриншоте выше, у вас не должно возникнуть проблем.