将网页上的vCard解析为MySQL数据库

时间:2009-10-31 02:17:07

标签: php mysql html-parsing vcard hcard

我有一个客户在单独的页面上使用单独的vCard。这些被粘贴到wordpress文本字段中。 (这不是维护人员列表的最有效方式,但我不会在事后进行编辑。)我的任务是编写一些内容来解析vCards中的所有地址并将信息转储到中央数据库中。这将允许所有不同的页面成为充满谷歌的lat和lng坐标的地址,并显示一个可爱的首页,其中的针脚很多。
此页面将显示该网站其余页面的所有vcards。

哦,这是网站上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 :(得分:0)

我相信您正在寻找HTML解析器。 Here是用于python的HTML解析模块

您需要从所有HTML文件中解析相关数据,然后对其执行任何操作。

我没有尝试任何php html解析器推荐任何但是因为你正在开发一个webserver我希望它有perl吗?看看perl html parsers

#此代码段将获取组织名称的内容

 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数组。

答案 1 :(得分:0)

尝试DOMDocument类'loadHTML method。然后,您可以使用DOMDocument方法选择所需的节点,属性和值。或者,如果您熟悉XPath,还可以实例化DOMXPath对象以查询加载的DOMDocument以选择所需的数据。