繁体   English   中英

如何使用json或xml格式的python从网页中提取信息?

[英]How to extract information from a web page using python in json or xml format?

我需要从网页中提取信息的帮助。 我提供了URL,然后需要提取诸如联系电话,地址,href,人员姓名等信息。我能够完全提取具有已知标签的URL的页面源。 但是我需要一个通用的源代码来从任何URL提取此数据。 我用正则表达式为例如提取电子邮件

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._%+-]+@[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格式提取所有信息,例如姓名,电话号码,电子邮件,地址等。 谢谢大家...!!

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

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

同时,经过一些小的修改(请注意我正在使用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._%+-]+@[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

结果是:

['townshipclerk@plainsboronj.com', 'acancro@plainsboronj.com',  ...]

祝好运

我认为您在这里走错了方向:您有一个HTML文件,您尝试从中提取信息。 您已经开始通过过滤“ @”符号来查找电子邮件地址来开始执行此操作(因此可以选择使用正则表达式)。 但是,使用正则表达式无法识别名称,电话号码等其他内容,因此另一种方法可能会有用。 在URL“ https://docs.python.org/3/library/html.parser.html ”下,有一些有关如何解析HTML文件的解释。 我认为这将是解决您需求的更好方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM