我正在处理正则表达式,并想知道如何从HTML页面提取URL。 我想从该行打印出来的网址:提取URL的Python正则表达式
Website is: http://www.somesite.com
每次该链接被发现,我只想提取什么网址是有后**Website is:**
任何帮助将不胜感激。
我正在处理正则表达式,并想知道如何从HTML页面提取URL。 我想从该行打印出来的网址:提取URL的Python正则表达式
Website is: http://www.somesite.com
每次该链接被发现,我只想提取什么网址是有后**Website is:**
任何帮助将不胜感激。
这是否足够或您需要更具体?
In [230]: s = 'Website is: http://www.somesite.com '
In [231]: re.findall('Website is:\s+(\S+)', s)
Out[231]: ['http://www.somesite.com']
你可以每行一个正则表达式匹配的捕获组,就像这样:
for l in page:
m = re.match("Website is: (.*)")
if m:
print m.groups()[0]
这两个检查每一行匹配的模式,并从中提取的链接。
几个陷阱:
这假定“网站是”表达始终是在该行的开始。如果不是,您可以使用re.search
。
这假定冒号和网站之间只有一个空格。如果不是这样,你可以将表达式改为Website is:\s+(http.*)
。
具体取决于您尝试解析的页面。
正则表达式可能是过度的,因为它非常简单。
def main():
urls = []
file = prepare_file("<yourfile>.html")
for i in file:
if "www" in i or "http://" in i:
urls.append(i)
return urls
def prepare_file(filename):
file = open(filename)
a = file.readlines() #splits on new lines
a = [ i.strip() for i in [ x for x in a ] ] #remove white space
a = filter(lambda x : x != '', a) #remove empty elements
return a
网址劲儿用正则表达式来捕捉,按我可能已经使用下面的正则表达式模式将有利于你读
:
pat = 'Website is: (%s)' % fireball
其中火球是一个模式以查找您可以在这里找到的网址:
这就是如果网址周围存在''/''标签,那么就会有问题。 – 2013-02-18 16:49:26
我必须承认,如果是我,我会使用Google提供的ReExp食谱之一。我做了最简单的工作。 – sotapme 2013-02-18 17:01:17
谢谢。我试过这个,它工作。感谢别人对他们的大量输入以及:) – 2013-02-18 17:10:42