如何从HTML中提取地址和电话号码?

时间:2009-09-10 03:22:40

标签: html

是否有专门解析此类数据的库?

3 个答案:

答案 0 :(得分:6)

您可以使用Google地图等内容。对地址进行地理编码,如果成功,Google的API将返回地址的XML表示形式,并将所有元素分开(并更正或完成)。

编辑:

我被选中了,不知道为什么。解析地址可能有点困难。以下是使用Google执行此操作的示例:

http://blog.nerdburn.com/entries/code/how-to-parse-google-maps-returned-address-data-a-simple-jquery-plugin

我不是说这是唯一的方式,也不一定是最好的方法。只需一种方式来解析网站上的地址。

答案 1 :(得分:2)

这有两个部分:从页面中提取完整的地址,并将该地址解析为可以使用的地址(例如,将各个部分存储在数据库中)。

对于第一部分,您需要一个启发式,最有可能依赖于国家/地区:对于美国地址[A-Z][A-Z],?\s*\d\d\d\d\d,应该为您提供一个地址的结尾,前提是这两个字母是一个州。找到字符串的开头是一个练习。

第二部分可以通过调用Google地图来完成,也可以像在Perl中一样,使用CPAN模块完成:Lingua::EN::AddressParse(在您的数据上测试它以查看它是否适合您)。

在任何情况下,这都是一项艰巨的任务,你很可能永远不会100%正确,所以计划在使用之前手动检查地址。

答案 2 :(得分:0)

你不需要正则表达式(还有)像pyparsing这样的通用解析器(根本)。看看像Beautiful Soup这样的东西,它甚至会将糟糕的HTML解析成类似于标签树的东西。从那里,您可以查看页面的来源,并找出要深入了解哪些标记以获取数据。然后,从Beautiful Soup的树中,您可以使用XPath(在最新版本中)搜索这些节点,并直接遍历您感兴趣的标记,轻松获取实际数据。从那里,您可以使用快速正则表达式或其他东西来解析数据。与纯粹的正则表达式相比,这将更加灵活,更具前瞻性,也可能更少爆发性。