Комментарии 27
Отличная статья. Вы в какой именно сфере применяете web data mining?
НЛО прилетело и опубликовало эту надпись здесь
Полстатьи о том, как написать правильный сервис) Думаю, этому стоило б уделить отдельную статью — благо тема стоящая.
На самом деле я не пропагандирую написание своих сервисов. Легче использовать готовый хост.
А можно в этом месте подетальнее?
Я планировал просто про это написать, но идея примерно в следующем: вместо того чтобы писать свой сервис, мы пишем нечто вроде «плаг-ина» для уже существующего, обобщенного сервиса. Хосты бывают для разных целей — например для WCF или для NServiceBus. Хост может сам быть сервисом. Хостом также может выступать, например, IIS.
занимаюсь тем же самым. почему не используете обычный WebClient/WebRequest?
Когда есть соответствие между URL и контентом, использую.
а как «боретесь» с pagination которая сделана на asp.net с помощью postback? если не секрет
Эта ситуация очень много где, и я с ней не борюсь. Первое что я делаю — смотрю есть ли в QueryString параметр размера страницы. Если есть — ставлю значение 100500 чтобы получить все записи на одной странице. Если нет — делаю обход с использованием WatiN. Да, это медленно, иногда жутко медленно, но скрейпинг в любом случае нельзя воспринимать как realtime processing.
есть ли проблемы в выявлении уникальности страницы? (чтобы не грузить по несколько раз одну станицу)
например ссылки на первой станице
(1) 2 3 4 5 6 7 8 9 следующая
если щелкаем на 9 ую то картина
такая же, только девятка вместо единицы подсвечена
1 2 3 4 5 6 7 8 (9) следующая
нужно нажать «следующая» и увидеть
предыдущая (10) 11 12 13 14 15 16 17 18 19 следующая
причем для 1 и для 10 в параметре href стоит javasript:doPostBack('blabal$page1', '')
например ссылки на первой станице
(1) 2 3 4 5 6 7 8 9 следующая
если щелкаем на 9 ую то картина
такая же, только девятка вместо единицы подсвечена
1 2 3 4 5 6 7 8 (9) следующая
нужно нажать «следующая» и увидеть
предыдущая (10) 11 12 13 14 15 16 17 18 19 следующая
причем для 1 и для 10 в параметре href стоит javasript:doPostBack('blabal$page1', '')
На самом деле порой проблем в 10 раз больше, особенно если вы например парсите какой-нибудь мощный чат-движок. В каждом случае проблема решается в индивидуальном порядке. Например, в случае повторений, у меня часто фигурирует такая структура как
HashSet<T>
, тем самым дупликаты не попадают в базу данных. Это кстате актуально когда нужно делать повторный обход уже посещенных в прошлом страниц – как например в случае с использованием поллинга.Дмитрий! Очень понравилась верстка топика, особенно модные заголовки-картинки!
У меня есть вопрос о том, чем же вас в действительности не устраивает, например, объект WebBrowser (который можно как раз запускать в Single Thread и радоваться жизни). И кстати, могут ли эти библиотеки обрабатывать и исполнять javascript? это иногда действительно проблема!
Я сейчас занят решением схожей задачи, и вариант с server-side WebBrowser Object меня очень и очень радует.
P.S.: Минимальный ценник на SQL Server 2008 Standard ощутимо ниже, деталей не скажу из-за недостатка информации, но версия за 7500 — это одна из самых дорогих коробочных лицензий.
У меня есть вопрос о том, чем же вас в действительности не устраивает, например, объект WebBrowser (который можно как раз запускать в Single Thread и радоваться жизни). И кстати, могут ли эти библиотеки обрабатывать и исполнять javascript? это иногда действительно проблема!
Я сейчас занят решением схожей задачи, и вариант с server-side WebBrowser Object меня очень и очень радует.
P.S.: Минимальный ценник на SQL Server 2008 Standard ощутимо ниже, деталей не скажу из-за недостатка информации, но версия за 7500 — это одна из самых дорогих коробочных лицензий.
WatiN использует сам браузер, тем самым нет вообще никаких проблем ни с js ни с flash или любым другим плагином. Использование WebBrowser тоже вариант, конечно, хоть и весьма странный.
Для типичного заказа на подобные работы, стоимость движка базы данных равна 0 (нулю). Что касается SQL Server, можно с уверенностью утверждать что стоимость SQL Server в России не может быть сильно ниже чем RRP. Посмотрите на SoftLine – 215757 рублей = $7014.
Для типичного заказа на подобные работы, стоимость движка базы данных равна 0 (нулю). Что касается SQL Server, можно с уверенностью утверждать что стоимость SQL Server в России не может быть сильно ниже чем RRP. Посмотрите на SoftLine – 215757 рублей = $7014.
Почему не воспользоваться HtmlWeb из состава HtmlAgilityPack для загрузки страницы?
В большинстве случаев нужно иметь возможность управлять браузером. Насколько я понимаю, HtmlWeb это обертка вокруг WebRequest?
Не знаю, код не смотрел, но подозреваю, что да. Просто страница грабится в одну строку, и сразу создаётся объект HtmlDocument. Просто исходя из вашего примера, я управления браузером не увидел, вот и предложил :) Вообще, я написал несколько парсеров на .Net, и ни разу браузером рулить было не надо. Поделитесь, когда это может быть нужно? Самый сложный парсер был для яндекса, там приходилось вручную качать странички через WebRequest и отправлять данные каптчи через POST. Но в общем-то, тот же Curl :)
Браузером нужно рулить когда URL не соответствует контенту один-к-одному. Например, paging через postback или ajax.
Вот живой пример: работа с банк-клиентами. Чтобы войти в банк-клиент, нужно сделать много телодвижений. Чтобы сделать перевод с одного счета на другой тоже нужно понажимать кнопочки.
Вот живой пример: работа с банк-клиентами. Чтобы войти в банк-клиент, нужно сделать много телодвижений. Чтобы сделать перевод с одного счета на другой тоже нужно понажимать кнопочки.
отличная статья и ссылки на пакеты
ps — тему опасную вы подняли, это руководство можно применить не только для скрейпинга
ps — тему опасную вы подняли, это руководство можно применить не только для скрейпинга
Подскажите, как извлечь данные из flash-приложения — www.protennislive.com/frameset.asp?year=2010&wkno=20&lang=en&tabno=1&eventid=0615&ref=www.atpworldtour.com
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Data acquisition, часть 1