Программное обеспечение Data Mining

435
mpen

Я хочу собрать некоторые данные, подобные этой http://www.newcardealers.ca/en/Dealers/List-A.aspx

И вставьте имя, адрес, номер телефона, адрес электронной почты и т. Д. В базу данных. Есть ли какое-то программное обеспечение, которое я могу использовать, чтобы взять веб-страницу, разрешить мне указать некоторые регулярные выражения или что-то еще, а затем выложить все совпадающие данные в CSV или какой-либо формат, легко вставляемый в БД?

1
как насчет wget и grep, например, либо за один шаг, либо путем перенаправления wget в файл, затем grep файла. barlop 8 лет назад 0

2 ответа на вопрос

2
mpen

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

Ну, сбор адресов и контактов с помощью сканирования - это сомнительный бизнес. Реальные отношения между клиентом и поставщиком обычно включают обмены через частные транзакции и EDI. hyperslug 14 лет назад 1
@hyperslug: Точка занята. Сбор урожая или очистка от сети, как правило, могут быть неясными, но это необязательно. То же самое с торрентами (не обязательно незаконными). Таким образом, я не думаю, что программное обеспечение должно изображать себя как таковое! Во всяком случае .. это не совсем так. Мозенда работает только онлайн, и это не бесплатно. Очень близко к тому, что я хочу, но не совсем :) mpen 14 лет назад 0
1
hyperslug

Один из способов сделать это - написать свой собственный скребок. это

using HtmlAgilityPack;  ...  HtmlDocument doc = new HtmlWeb().Load("http://www.newcardealers.ca/en/Dealers/List-A.aspx"); foreach (HtmlNode td in doc.DocumentNode.SelectNodes("//td[@width='268']")) { Console.Write(td.SelectSingleNode("span[@class='BodyTextBold']").InnerText); Console.WriteLine(td.SelectSingleNode("span[@class='BodyText']").InnerText.Replace("\t\t\t\t", "\r\n")); } 

производит это

A.M. FORD SALES LIMITED 2795 Highway Drive Trail, BC V1R2T1 Telephone : 250 364-0202 http://www.amford.com amford@amford.com  ABBOTSFORD CHRYSLER LTD. 30285 Automall Drive Abbotsford, BC V2T5M1 Telephone : 604 857-8888 http://www.abbotsfordchrysler.com paul@abbotsfordchrysler.com  ACURA OF LANGLEY 19447 Langley ByPass Surrey, BC V3S6K1 Telephone : 604 539-2111 http://www.acuraoflangley.com acura_info@acuraoflangley.com  ... 

Не идеально, но вы видите, куда это идет.

Не уверен, как автономное приложение будет знать, как анализировать это автоматически.

В конце концов я сделал именно это ... C # / HtmlAgilityPack. Умное автономное приложение может сделать это всего несколькими щелчками мыши (выберите элементы, которые вы хотите получить, и он вычислит оператор xpath, который найдет остальные). mpen 14 лет назад 0
Хм, я вижу. Я предполагал, что вы ищете что-то полностью автоматизированное, что, я думаю, будет очень сложно. Семантическая структура страницы, на которую вы ссылались, была очень неинтуитивной и, к сожалению, вероятно, представляет собой типичный случай. Может быть, после некоторого обучения пользователя, например, выбора шаблона для соответствия, как вы предполагаете, это может быть сделано. Все еще звучит сложно, с точки зрения кода, хотя я уверен, что маркетологи заплатили бы дорого за такое приложение ... hyperslug 14 лет назад 0
Ну ... Мозенда на этой тестовой странице на удивление хорошо запустился. Он отлично все выбрал и даже отлично перешел на следующую страницу, хотя кнопки «Далее» не было, а некоторые буквы были пропущены. Не сказать, что это * слишком * легко программировать ... но ясно, что это выполнимо. Я не уверен, насколько семантическая структура неинтуитивна ... данные выложены довольно просто (визуально, во всяком случае). Если вы имеете в виду отсутствие семантики в коде ... это вряд ли имеет значение! Пока вы можете выбрать * что-то *, что однозначно идентифицирует набор. mpen 14 лет назад 0
Вы могли бы написать в своем ответе, что язык, на котором вы написали, был c # barlop 8 лет назад 0

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