Мне нужно знать, как создать скребок (на Java) для сбора данных с HTML-страниц и вывода в базу данных... не знаю, с чего начать, поэтому любая информация, которую вы можете мне дать по этому поводу, была бы отличной. Кроме того, вы не можете быть слишком простым или простым здесь ... спасибо :)
Собрать данные с HTML-страниц с помощью Java, вывести в базу данных
Ответы (5)
Сначала вам нужно ознакомиться с парсером HTML
DOM
на Java, например JTidy. Это поможет вам извлечь то, что вы хотите, из файла HTML
. Когда у вас есть необходимые вещи, вы можете использовать JDBC
, чтобы вставить database
.
Может возникнуть соблазн использовать регулярное выражение для этой работы. Но не надо. HTML не является обычным языком, поэтому регулярные выражения не подходят.
Я запускаю парсер с помощью JSoup. Я новичок, но обнаружил, что он очень интуитивно понятен и с ним легко работать. Он также способен анализировать широкий диапазон источников html, XML, RSS и т. д.
Я экспериментировал с htmlunit без особого успеха.
я успешно применил API браузера LOBO в проекте, который очищал HTML-страницы. проект браузера lobo предлагает браузер, но вы также можете очень легко использовать API, стоящий за ним. он также будет выполнять javascript, и если этот javascript манипулирует DOM, то это также будет отражено в DOM, когда вы исследуете DOM. короче говоря, API позволяет вам имитировать браузер, вы также можете работать с файлами cookie и прочим.
теперь, чтобы получить данные из HTML, я бы сначала преобразовал HTML в действительный XHTML. вы можете использовать для этого jtidy. поскольку XHTML является допустимым XML, вы можете использовать XPath для очень простого извлечения нужных данных. если вы попытаетесь написать код, который анализирует данные из необработанного HTML, ваш код быстро превратится в беспорядок. поэтому я бы использовал XPath.
Получив данные, вы можете вставить их в БД с помощью JDBC или, может быть, используйте Hibernate, если вы хотите избежать написания слишком большого количества SQL
ОГРОМНЫЙ процент веб-сайтов построен на искаженном HTML-коде.
Крайне важно использовать что-то вроде HtmlCleaner для очистки исходного кода, который вы хотите проанализировать.
Затем вы можете успешно использовать XPath для извлечения узлов и регулярное выражение для анализа определенной части строк, которые вы извлекли со страницы.
По крайней мере, это техника, которую я использовал.
Вы можете использовать xHtml, который возвращается из HtmlCleaner, в качестве своего рода интерфейса между вашим приложением и удаленной страницей, которую вы пытаетесь проанализировать. Вы должны протестировать это, и в случае изменения удаленной страницы вам просто нужно извлечь новый xHtml, очищенный HtmlCleaner, повторно адаптировать запросы XPath, чтобы извлечь то, что вам нужно, и повторно протестировать код вашего приложения на новый интерфейс.
Если вы хотите создать многопоточный «скребок», имейте в виду, что HtmlCleaner не является потокобезопасным (см. мой пост здесь).
Этот сообщение может дать вам идея о том, как разобрать правильно отформатированный xHtml с помощью XPath.
Удачи! ;)
примечание: в то время, когда я внедрил свой Scraper, HtmlCleaner лучше справился с нормализацией страниц, которые я хотел проанализировать. В некоторых случаях jTidy не справлялся с той же работой, поэтому я предлагаю вам попробовать.
Используя JTidy, вы можете удалять данные из HTML. Затем вы можете использовать JDBC.