查找 Phone 个数字

Find Phone Numbers

希望从多个站点查找 phone 号码。 所以每个站点很可能在不同的 sections/classes/formats 等

中都有它

我很难使用正则表达式或 类 找到 phone 个数字。

非常感谢任何帮助

我的密码是

def parse1(self, response):
hxs = Selector(response)
titles = hxs.xpath('/html/body')
items = []

for titles in titles:
    item = GenericCrawlerItem()

    item["phone"] = re.findall('/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/gm', response.body)

    item["phone"] = titles.xpath('//div[contains(text(), "tel")]/text()').extract()

    items.append(item)
    return items

谢谢!

编辑:我正在寻找的格式主要是我怀疑的标准格式,例如:

(xxx)xxx-xxxx
xxx)xxx-xxxx
xxx.xxx.xxxx
xxx xxx xxxx
x(xxx)xxx-xxxx
x(xxx)xxx.xxxx
x.xxx.xxx.xxxx
+x(xxx)xxx-xxxx
+x.xxx.xxx.xxxx

即使他们没有填写每一个。一对夫妇会非常有帮助!

正则表达式:

(\d\.?|\+\d\.?)?\(?\d{3}(\.| |-|\))\d{3}(\.| |-)\d{4}

...将匹配您的所有示例。

如果您想对任何部分进行澄清,或者如果它不适合您,请发表评论,我们会尽力解决。这可能不起作用的一个常见原因是因为某些东西没有被正确转义(我使用 Sublime Text 开发了这个正则表达式,而不是 Python - Python 可能需要在这里和那里转义一些额外的东西),或者您的正则表达式引擎与我的不同。例如,并非所有正则表达式引擎都支持 \d 元字符来匹配数字 0-9,并且并非所有引擎都支持使用 {#} 来表示要匹配的特定字符数。

我找到了一个足够好的答案,结果如

xxx.xxx.xxxx 或者 xxx-xxx-xxxx

def parse1(自我,回应): hxs = 选择器(响应) 标题 = hxs.xpath('/html/body') 项目 = []

for titles in titles:
    item = GenericCrawlerItem()
    item["email"] = re.findall('[\w\.-]+@[\w\.-]+', response.body)
    item["website"] = response.url
    item["links"] = titles.xpath('//a/@href').extract()
    item["phone"] = re.findall(r'(\d{3}[-.()]\d{3}[-.]\d{4})', response.body)   ##results such as xxx xxx-xxxx or xxx.xxxx

    converter = html2text.HTML2Text()
    converter.ignore_links = True
    items.append(item)
    return items

独立:

    item["phone"] = re.findall(r'(\d{3}[-.()]\d{3}[-.]\d{4})', response.body)   ##results such as xxx xxx-xxxx or xxx.xxxx

感谢所有帮助过的人!