我想从大约 1000-2000 个不同的餐厅网站上抓取联系信息。几乎所有网站的主页或某种“联系”页面上都有联系信息,但没有两个网站是完全相同的(即,没有可利用的共同模式)。如何可靠地从此类网站中抓取电子邮件/电话 # 信息,而无需将 Python 脚本专门指向页面上的特定元素(即,脚本需要与结构无关,因为每个网站都有独特的 HTML 结构,因此它们不需要)例如,所有人都在“联系人”中拥有他们的联系信息
div
)。
我知道没有办法编写一个 100% 有效的程序,我只想最大化我的命中率。
任何对此的指导——从哪里开始,读什么——将不胜感激。
谢谢。
查看python的正则表达式模块。 您可以写一个简单的表达式,例如:
re.search(u"\(\d{3}\) \d{3}-\d{4}",string)
并找到任何标准格式的电话号码字符串(适用于美国号码)。 它看起来像是胡言乱语,但一旦你这样做了,它应该会让网络抓取变得更加容易。 这是一个不错的入门教程:
http://www.tutorialspoint.com/python/python_reg_expressions.htm
如果您遇到太多动态网页,我还强烈推荐 Selenium 进行网页抓取:
在大多数国家/地区,电话号码遵循极少数明确定义的模式之一,可以与简单的正则表达式匹配 - 同样,电子邮件地址具有国际公认的格式 - 只需抓取主页、联系人或联系我们页面,然后使用正则表达式进行解析- 您应该可以轻松达到 90% 以上的准确率。
当然,您也可以将餐厅名称和城镇提交到本地黄页网站。