查找 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
感谢所有帮助过的人!
希望从多个站点查找 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
感谢所有帮助过的人!