3

我想从大约 1000-2000 个不同的餐厅网站上抓取联系信息。几乎所有网站的主页或某种“联系”页面上都有联系信息,但没有两个网站完全相同(即,没有可利用的通用模式)。我怎样才能可靠地从这些网站上抓取电子邮件/电话号码信息,而无需专门将 Python 脚本指向页面上的特定元素(即,脚本需要与结构无关,因为每个网站都有独特的 HTML 结构,它们没有'例如,他们在“联系人”中都有他们的联系信息div)。

我知道没有办法编写一个 100% 有效的程序,我只想最大化我的命中率。

任何关于这方面的指导——从哪里开始,读什么——将不胜感激。

谢谢。

4

2 回答 2

1

在大多数国家/地区,电话号码遵循可以与简单正则表达式匹配的极少数定义明确的模式之一 - 同样,电子邮件地址具有国际公认的格式 - 只需抓取主页、联系人或联系我们页面,然后使用正则表达式解析 -您应该很容易达到 90% 以上的准确率。

当然,或者,您只需将餐厅名称和城镇提交到当地的黄页网站。

于 2013-06-28T14:13:19.203 回答
1

查看python的正则表达式模块。您可以编写一个简单的表达式,例如:

re.search(u"\(\d{3}\) \d{3}-\d{4}",string)

并找到任何标准格式的电话号码字符串(对于美国号码)。它看起来像胡言乱语,但一旦你这样做,它应该会让网络抓取变得无限容易。这是一个不错的入门教程:

http://www.tutorialspoint.com/python/python_reg_expressions.htm

如果您遇到太多动态网页,我也强烈推荐 Selenium 进行网页抓取:

https://pypi.python.org/pypi/selenium

于 2013-06-28T14:15:58.923 回答