Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从多个独特的站点抓取联系人信息_Python_Web Scraping_Beautifulsoup_Screen Scraping - Fatal编程技术网

使用Python从多个独特的站点抓取联系人信息

使用Python从多个独特的站点抓取联系人信息,python,web-scraping,beautifulsoup,screen-scraping,Python,Web Scraping,Beautifulsoup,Screen Scraping,我想从大约1000-2000个不同的餐馆网站上搜集联系信息。几乎所有这些网站的主页或某种“联系人”页面上都有联系信息,但没有两个网站完全相同(即,没有可利用的共同模式)。我如何才能可靠地从这些站点中获取电子邮件/电话信息,而不将Python脚本专门指向页面上的特定元素(即,脚本需要不受结构限制,因为每个站点都有一个独特的HTML结构,它们并不都有,例如,它们的联系人信息位于“contact”div) 我知道没有办法编写一个100%有效的程序,我只想最大限度地提高命中率 如果您有任何关于从何处开始

我想从大约1000-2000个不同的餐馆网站上搜集联系信息。几乎所有这些网站的主页或某种“联系人”页面上都有联系信息,但没有两个网站完全相同(即,没有可利用的共同模式)。我如何才能可靠地从这些站点中获取电子邮件/电话信息,而不将Python脚本专门指向页面上的特定元素(即,脚本需要不受结构限制,因为每个站点都有一个独特的HTML结构,它们并不都有,例如,它们的联系人信息位于“contact”
div

我知道没有办法编写一个100%有效的程序,我只想最大限度地提高命中率

如果您有任何关于从何处开始、阅读内容的指导,我们将不胜感激


谢谢。

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


当然,您也可以简单地将餐厅名称和城镇提交到当地的黄页网站。

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

re.search(u"\(\d{3}\) \d{3}-\d{4}",string)
并查找任何标准格式的电话号码字符串(适用于美国号码)。 这看起来像胡言乱语,但一旦你这么做了,它应该会让抓网变得无限容易。 下面是一个不错的入门教程:

如果您遇到太多的动态网页,我还强烈建议您使用Selenium进行网页抓取:


太好了,谢谢。如果主页上没有电子邮件/电话匹配,那么找到网站联系人页面的最佳方式是什么?只需在页面上查找包含“联系人”的链接即可?由于我将在多达2000个不同的站点上运行此脚本,我不想搜索每个锚元素(除非这是唯一的方法),只是为了节省时间/防止程序崩溃。有什么想法吗?希望他们中的大多数都能像你说的那样出现在主页上(如果没有,那就有点傻了)。我建议首先只搜索主页,然后搜索链接文本中带有“联系人”的页面(您可以使用BeautifulSoup获得这些页面)。之后,你可以单独处理有问题的网站——如果让我猜的话,你应该只有100个左右。