Разбор vCards на веб-страницах в БД MySQL

У меня есть клиент, который использует отдельную vCard на отдельной странице. Они вставляются в текстовое поле WordPress. (Не самый эффективный способ ведения списка людей, но я не буду редактировать после этого факта.) Моя задача - написать что-то, чтобы проанализировать все адреса в vCards и выгрузить информацию в центральную базу данных. Это позволило бы всем разрозненным страницам стать адресами, переполненными координатами широты и долготы от Google, и отображать прекрасную главную страницу с большим количеством выводов.
На этой странице будут показаны все открытки с остальных страниц сайта.

О, это пример обеззараженного vcard на сайте, в действительности он будет окружен большим количеством сомнительного HTML-кода:

<div class="vcard">
<span class="fn org">XYZ Org Name</span><br />
<span class="url">http://www.someurl.com/</span>
<div class="adr"><span class="street-address">1234 Main Ave</span><br />
<span class="locality">Chicago</span><br />
<span class="region">IL</span><br /><span class="postal-code">60647</span></div>
</div>

Теперь, каждая страница имеет один из них, и разбираться со всем сайтом и собирать их в массив - это немного из моей лиги. Я могу справиться со сбросом их в базу данных, используя PHP и mySQL.
Любой совет будет приветствоваться!
РЕДАКТИРОВАТЬ: Не уверен, насколько это важно, но я получаю данные с другого сервера.

2 ответа

Попробуйте метод loadHTML класса DOMDocument. Затем вы можете использовать методы DOMDocument для выбора нужных вам узлов, атрибутов и значений. Или, если вы знакомы с XPath, вы также можете создать экземпляр объекта DOMXPath для запроса к загруженному DOMDocument, чтобы выбрать нужные данные.

Я считаю, что вы ищете парсеры HTML. Вот модуль разбора HTML для python

Вам нужно проанализировать соответствующие данные из всех файлов HTML, а затем делать с ними что угодно.

Я не пробовал ни одного php html парсера, чтобы рекомендовать какой-либо, но так как вы работаете над веб-сервером, я надеюсь, что он имеет perl? Взгляните на Perl HTML парсеры.

# этот фрагмент получит содержимое названия организации

 sub start {
      my ($self, $tag, $attr, $attrseq, $origtext) = @_;

      if ($tag =~ /^span$/i && $attr->{'class'} =~ /^fn org$/i) {
          # see if we find <span class="fn org"
          push (@org_names, $origtext);
      } 
  }

теперь у вас есть @org_names массив, который содержит все названия организаций.

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