Разбор vCards на веб-страницах в БД MySQL - PullRequest
0 голосов
/ 31 октября 2009

У меня есть клиент, который использует отдельную 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 ]

0 голосов
/ 31 октября 2009

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

0 голосов
/ 31 октября 2009

Я думаю, вы ищете парсеры 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, который содержит все названия организаций.

...