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

如何从HTML中提取地址和电话号码?,html,Html,有专门解析此类数据的库吗?您可以使用谷歌地图之类的工具。对地址进行地理编码,如果成功,Google的API将返回地址的XML表示形式,并将所有元素分开(并更正或完成) 编辑: 我被否决了,不知道为什么。解析地址可能有点困难。下面是一个使用谷歌实现这一点的示例: 我并不是说这是唯一的方法,也不一定是最好的方法。只需解析网站地址的一种方法。这有两个部分:从页面中提取完整地址,并将该地址解析为您可以使用的内容(例如,将各个部分存储在数据库中) 对于第一部分,您需要一个启发性的、最有可能取决于国家的地

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

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

编辑:

我被否决了,不知道为什么。解析地址可能有点困难。下面是一个使用谷歌实现这一点的示例:


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

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

对于第一部分,您需要一个启发性的、最有可能取决于国家的地址:对于美国地址
[a-Z][a-Z],?\s*\d\d\d\d\d
应该给出地址的结尾,前提是这两个字母都是州。查找字符串的开头是一个练习

第二部分可以通过调用GoogleMaps来完成,也可以像往常一样在Perl中使用CPAN模块来完成:(在您的数据上测试它,看看它是否对您足够有效)


在任何情况下,这都是一项困难的任务,您很可能永远不会100%正确地完成它,因此在使用它们之前,请计划手动检查地址。

您不需要正则表达式(现在)或像pyparsing这样的通用解析器(根本不需要)。看看像BeautifulSoup这样的东西,它甚至可以将糟糕的HTML解析成类似于标签树的东西。从那里,您可以查看页面的源代码,并找出要向下钻取哪些标记以获取数据。然后,从Beautiful Soup的树中,您可以使用XPath(在最新版本中)搜索这些节点,并直接在您感兴趣的标记上循环,轻松地获得实际数据。从那里,您可以使用快速正则表达式或其他方法解析数据。这将比仅仅用纯正则表达式更灵活、更经得起未来考验,也可能不会让人头疼。

。IMHO说,将“云中”服务(如Google Maps API)视为一个库(这是海报所要求的)是有效的。也许否决票是因为没有首先从html页面获取地址?只是一个猜测。可能被否决了(顺便说一句,我没有),因为这样做是反对谷歌的TOS的,除非你向用户显示地图。