Сохранение HTML-таблиц в базе данных

Я пытаюсь очистить таблицу html и сохранить ее данные в базе данных. Какие стратегии / решения помогли вам приблизиться к этой программе.

Мне удобнее всего работать с Java и PHP, но на самом деле было бы полезно решение на любом языке.

Обновлено: Для более подробной информации, UTA (автобусная система Солт-Лейк-Сити) предоставляет расписание автобусов на своем веб-сайте. Каждое расписание отображается в таблице, в заголовке которой указаны станции, а в строках - время отправления. Я хотел бы просмотреть расписания и сохранить информацию в таблице в форме, которую я затем могу запросить.

Вот отправная точка для расписаний

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
0
4 030
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

По этой теме есть хорошая книга: Spidering Hacks от Кевина Хеменуэя и Тары Кэлишейн.

Ответ принят как подходящий

Все зависит от того, насколько правильно парсить ваш HTML? Если это действительный XHTML, вы можете просто использовать к нему несколько запросов XPath, чтобы получить все, что захотите.

Пример xpath в php: http://blogoscoped.com/archive/2004_06_23_index.html#108802750834787821

Вспомогательный класс для очистки таблицы от массива: http://www.tgreer.com/class_http_php.html

Раньше я пробовал очистить экран, но обнаружил, что он очень хрупкий, особенно с динамически сгенерированным кодом. Я нашел сторонний DOM-парсер и использовал его для навигации по исходному коду с помощью шаблонов сопоставления, подобных Regex, чтобы найти нужные мне данные.

Я предложил попытаться выяснить, есть ли у владельцев сайта опубликованный API (часто веб-службы) для получения данных из их системы. Если нет, то удачи тебе.

К сожалению, на сайте нет API, иначе это было бы идеально.

Dan Cramer 16.09.2008 19:12

Я обнаружил, что языки сценариев обычно лучше подходят для выполнения таких задач. Лично я предпочитаю Python, но PHP тоже подойдет. Нарезка, измельчение и синтаксический анализ строк в Java - это слишком много работы.

Это было бы проще всего с Perl и следующими модулями CPAN:

CPAN является основным механизмом распространения модулей Perl и доступен, например, с помощью следующей команды оболочки:

# cpan HTML::Parser

Если вы работаете в Windows, все будет поинтереснее, но вы все равно можете это сделать: http://www.perlmonks.org/?node_id=583586

pianohacker упустил из виду модуль HTML :: TableExtract, который был разработан именно для такого рода вещей. Вам все равно понадобится LWP для получения таблицы.

Если вам нужна форма таблицы csv, вы можете использовать это: используя python:

например, представьте, что вы хотите очистить котировки форекс в форме CSV с какого-либо сайта, например: fxoanda

тогда...

from BeautifulSoup import BeautifulSoup
import urllib,string,csv,sys,os
from string import replace

date_s = '&date1=01/01/08'
date_f = '&date=11/10/08'
fx_url = 'http://www.oanda.com/convert/fxhistory?date_fmt=us'
fx_url_end = '&lang=en&margin_fixed=0&format=CSV&redirected=1'
cur1,cur2 = 'USD','AUD'
fx_url = fx_url + date_f + date_s + '&exch=' + cur1 +'&exch2=' + cur1
fx_url = fx_url +'&expr=' + cur2 +  '&expr2=' + cur2 + fx_url_end
data = urllib.urlopen(fx_url).read()
soup = BeautifulSoup(data)
data = str(soup.findAll('pre', limit=1))
data = replace(data,'[<pre>','')
data = replace(data,'</pre>]','')
file_location = '/Users/location_edit_this'
file_name = file_location + 'usd_aus.csv'
file = open(file_name,"w")
file.write(data)
file.close()

как только вы получите его в этой форме, вы можете преобразовать данные в любую форму, которая вам нравится.

Рискуя начать здесь, на SO, дерьмовый шторм, я бы посоветовал, если формат таблицы никогда не изменится, вы могли бы просто уйти от использования Regularexpressions для синтаксического анализа и захвата нужного вам контента.

Прошло два с половиной года, а пятого буря не было. Туз.

indra 17.07.2013 13:34

Другие вопросы по теме