Разбор HTML с PHP - PullRequest
       17

Разбор HTML с PHP

0 голосов
/ 03 ноября 2010

Я работаю над парсером в PHP (что очень ново для меня) для поиска по следующему источнику:

http://web2.uconn.edu/wdlcalendar/index.php/month/list/2010-11-02/All/All/UConn_Master_Calendar1/

Цель синтаксического анализатора - сохранить нужную информацию в базе данных на локальном компьютере: нам нужна дата (например, 1 ноября), название события, время события и ссылка на " страница «Дополнительная информация» для данного конкретного события (которая встроена в название события в виде гиперссылки).

Первая часть: я получаю дату, например, 1 ноября, используя getElementsByTagName ("h3"). Однако есть два других элемента, которые встречаются до дат в документе HTML, которые я НЕ хочу.

ВОПРОС: есть ли способ заставить синтаксический анализатор присматривать за определенной частью кода или конкретной строкой?

Вторая часть: другая проблема, с которой я столкнулся, заключается в том, что ссылка на страницу события и строка, представляющая название события, объединены в одном и том же HTML-теге. Как вытащить эту информацию отдельно, так как функция getElementsByTagName () (в моем понимании) не сможет это сделать. Вот часть HTML-кода:

<a class="smoothbox" href="http://web2.uconn.edu/wdlcalendar/index.php/occurrence/57237">
WEAR RED DAY
<em>All Day</em>
</a>
</li>

Идея состоит в том, чтобы я хотел, чтобы "WEAR RED DAY" (имя), "Весь день" (время) и "http://web2.uconn.edu/wdlcalendar/index.php/occurrence/57237" (ссылка) были отдельными элементами для хранения в нашей базе данных. КАК?!

1 Ответ

4 голосов
/ 03 ноября 2010

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

...