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