Стоит задача поиска прямых ссылок на драйвера, подскажите как лучше реализовать эту задачу? Я никогда не делал ничего подобного поэтому появилась мысль что нужно реализовать эдакую поисковую машину, хотя наверное есть и другие варианты решения данной задачи. Я так понимаю основной подзадачей будет стоять парсинг html-страницы и поиск нужной ссылки, но как, в какой последовательности что делать не знаю...Например я уже подумал что можно составить небольшую базу данных сайтов производителей оборудования откуда можно скачивать оригинальные драйвера и затем производить парсинг этих страниц. Вообщем, подскажите хоть направление работы.
Неплохо бы указать, что именно подразумевается под словами "драйвер" и "ссылка", а также какие из ссылок следует считать прямыми, а какие нет.
Ну и очертить пространство, в котором следует производить поиск.
Без представления о том, ЧТО именно нужно сделать, обсуждать детали бессмысленно.
Найти сайт производителя как-раз несложно. Google легко с этим справляется. А вот как ты хочешь на сайте производителя прямую ссылку на драйвер выцеплять, я не знаю. Ведь на каждом сайте свой алгоритм получения ссылки. В общем случае задача настолько сложна, что проще признать её нерешаемой.
Конечно, можно организовать табличку в БД с полями вроде «название устройства», «платформа», «прямая ссылка», но заполнять её придется вручную. Опять же, статической ссылки может не существовать.
Можно искать не на сайтах производителей оборудования, а на сайтах-библиотеках драйверов — там сразу большие подборки. Но у таких сайтов и свой поиск есть.
Ну можно заставить искать кнопочку с заголовком "драйвера". Потом искать, что из того, что появится, является ответом на нажатие кнопочки, скорее всего, предложат выбрать модель устройства или операционку. Программа должна из списка найти подходящий пункт и снова нажать кнопочку, как-то так.
Регулярки тут врядли помогут.
Ну вот отбери те ссылки, в заголовках которых есть слово "драйвера".
Я думаю, полностью автоматизировать этот процесс не получится.
Т.е.:
- либо будет изрядная доля ручной работы, причем такой, которую периодически нужно будет повторять,
- либо база получится, мягко говоря, не представительной.
Другими словами, следует примерно оценить приемлемые трудозатраты:
- первоначальные: на создание базы и инструментария работы с ней (в тысячах часов),
- регулярные: на проверку актуальности базы, пополнение ее новыми поступлениями и усовершенствование инструментария (в сотнях или тысячах часов).
После этого можно уже будет обсуждать, по какому пути целесообразнее двигаться, и стоит ли вообще этим заниматься.
Правда появилась ща мысля одна. Можно задавать таким образом запрос гуглу что он будет выдавать с высокой вероятностью страницу с дровами сайта-производителя. Например так: sites.amd.com скачать драйвер radeon hd 2600 и первая же ссылка будет на нужный мне сайт где без проблем найду нужную ссыль. Хотя не уверен что со всем так же прокатит.
Проблем с нарушением пользовательского соглашения не боишься? Попытка сформировать запрос, получить его и распарсить не через интерфейс Гугла нарушает http://code.google.com/intl/ru/apis/documents/terms.html (пункт 5.3, в частности)
Крайне бесперспективная затея.
Этих сайтов с поиском драйверов - как собак нерезанных. И многие предлагают свои утилиты, которые тебе все "сделают тип-топ" (как же, держи карман шире..)) - ставишь бесплатно, потом плати. У моих пользователей иной раз по 2-3 таких утилиты стоит. Еще хорошо, если они не шпионят (а я практически уверен в обратном). В последнее время поиск драйверов превратился в постоянные попытки не вляпаться в это говно. И это тебе ОЧЕНЬ так неслабо усложнит ситуацию, потому что они прекрасно мимикрируют, чтоб паразитировать на запросах.
Более того, я сильно подозреваю, что проблема, которую ты взялся решать, возникла именно из-за этого. Когда на запрос о драйвере приходит 90% этого мусора, тогда возникает ошибочное ощущение, что проблема сложная. А они ее специально еще и усложняют, потому что это им на руку (создание маркета). И еще они конкурируют друг с другом.. Фактически выходит, что они СОЗДАЮТ проблему искусственно, чтобы предложить (за деньги) ее "решение" (да, именно в кавычках). А проблема не стоит выеденного яйца - надо просто пойти на сайт производителя!
Но, при всей простоте исходной проблемы, автоматический поиск - это другая и явно очень непростая задача. И что получается? Ты берешься решать СЛОЖНУЮ задачу, которая подменяет в твоем сознании исходную совсем ПРОСТУЮ. И на фига оно надо?? Сделать идеально - это просто невозможно, ошибки поиска НЕМИНУЕМЫ (особенно в условиях конкуренции, см.выше). Самый лучший инструмент для поиска - ГОЛОВА НА ПЛЕЧАХ (плюс google, конечно). Ну, сделаешь ты еще одну такую же дрянь, и уже не я, а кто-то другой, после этого нашего разговора, будет говорить уже в том числе и ПРО ТВОЮ утилиту: "все кругом засрали настолько, что простейший поиск драйвера стал кошмаром!.." Ты этого хочешь?
И еще одно, уж не обижайся..
Не надо говорить "драйверА" (им.пад.,мн.ч.). Это не круто. Это такая же ошибка, как говорить "магАзин". Можно сказать в шутку, не более того. Надо говорить "дрАйверы". Еще раз: не обижайся, пожалуйста.. но нужно быть асом в лингвистике прежде чем браться за семантический анализ.
Отлично, спасибо за комменты. Но мне лично делать "это" нахрен не надА, я пытаюсь выкрутиться, а выкрутиться я пытаюсь потому что это, как ни странно, тема моего диплома, которую поменять теперь невозможно. Вообщем, задача такая: "Как сделать Интернет-сервис поиска драйверов", чтобы "это" было похоже на диплом???