2015-10-19 25 views
0

我需要帮助从网页中提取信息。我给网址,然后我需要提取信息,如联系电话号码,地址,href,人名等。我能够提供完整的页面源提供的URL与已知标签。但是我需要一个通用的源代码来从任何URL中提取这些数据。我使用正则表达式来提取电子邮件,例如如何使用json或xml格式的python从网页中提取信息?

import urllib 
import re 
#htmlfile=urllib.urlopen("http://www.plainsboronj.com/content/departmental-directory") 
urls=["http://www.plainsboronj.com/content/departmental-directory"] 
i=0 
regex='\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b' 
pattern=re.compile(regex) 
print pattern 
while i<len(urls): 
    htmlfile=urllib.urlopen(urls[i]) 
    htmltext=htmlfile.read() 
    titles=re.findall(pattern,htmltext) 
    print titles 
    i+=1 

这给了我空的列表。任何帮助提取所有信息,如上所述,将不胜感激。 这个想法是给出一个URL,并提取所有的信息,如姓名,电话号码,电子邮件,地址等以json或xml格式。谢谢大家...!!

+0

你确定你的正则表达式是正确的吗?我已经下载了您正在访问的文件,并根据您的表达式进行了过滤,结果随我正在使用的正则表达式的类型(我使用Ultra Edit文本编辑器(Perl和UNIX正则表达式)和Cygwin UNIX模拟器)而变化。请注意,正则表达式语法取决于底层技术。 – Dominique

+0

当我在python脚本中运行它时,正则表达式工作正常。请给我一些建议,以实现我的其余目标。我甚至将http://regexr.com/上的正则表达式与示例进行了比较,工作正常 –

回答

0

首先你需要修复你的正则表达式。 \需要在python字符串中转义。 解决此问题的简单方法是使用原始字符串r''。

regex=r'\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b

0

同时,我设法得到它的工作,经过一些小的修改(注意,我使用Python 3.4.2工作):

import urllib.request 
import re 
#htmlfile=urllib.urlopen("http://www.plainsboronj.com/content/departmental-directory") 
urls=["http://www.plainsboronj.com/content/departmental-directory"] 
i=0 
regex='[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}' 
pattern=re.compile(regex) 
print(pattern) 
while i<len(urls): 
    htmlfile=urllib.request.urlopen(urls[i]) 
    htmltext=htmlfile.read() 
    titles=re.findall(pattern,htmltext.decode()) 
    print(titles) 
    i+=1 

结果是:

['[email protected]', '[email protected]', ...] 

祝你好运

+0

Thankyou,它已经在python-2.7中为我工作了。请给我一些工作的名称,电话号码,地址,链接,邮件等通用的方式..所有其他信息提取和导出到JSON。我知道我可以运行一个单独的separte正则表达式,但那不是这样。我需要提取所有信息并以xml或json格式存储。 TIA –

0

我想你是在wr在这里你可以看到:你有一个HTML文件,你尝试从中提取信息。你已经开始通过过滤'@'来做到这一点 - 寻找电子邮件地址(因此你选择使用正则表达式)。然而,使用正则表达式不能识别名称,电话号码等其他内容,因此另一种方法可能会有用。在URL“https://docs.python.org/3/library/html.parser.html”下面有关于如何解析HTML文件的一些解释。在我看来,这将是解决您的需求的更好方法。