用于提取URL的Python正则表达式
我正在研究正则表达式,想知道如何从HTML页面提取URL。 我想从这行打印出url:用于提取URL的Python正则表达式,python,expression,Python,Expression,我正在研究正则表达式,想知道如何从HTML页面提取URL。 我想从这行打印出url: Website is: http://www.somesite.com 每次找到该链接时,我只想提取**网站是:* 任何帮助都将不胜感激。这就足够了,还是您需要更具体一些 In [230]: s = 'Website is: http://www.somesite.com ' In [231]: re.findall('Website is:\s+(\S+)', s) Out[231]: ['http://
Website is: http://www.somesite.com
每次找到该链接时,我只想提取**网站是:*
任何帮助都将不胜感激。这就足够了,还是您需要更具体一些
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
的内容,网址是:\s+(http.*)
具体细节将取决于您试图解析的页面。Regex可能会有点过分,因为它太简单了
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
def main():
URL=[]
文件=准备文件(“.html”)
对于文件中的i:
如果i中的“www”或i中的“http://”:
url.append(i)
返回URL
def准备_文件(文件名):
文件=打开(文件名)
a=file.readlines()#在新行上拆分
a=[i.strip()代表i in[x代表x in a]]#删除空白
a=过滤器(λx:x!='',a)#移除空元素
归还
据我所读到的,用正则表达式捕捉URL很难
可能使用以下正则表达式模式对您有好处:
pat = 'Website is: (%s)' % fireball
其中fireball是一种捕获URL的模式,您可以在此处找到:
这是一个更好的答案,但如果url周围有
/
标记,则会有陷阱。我必须承认,如果是我,我会使用Google上的url提取
ReExp配方之一。我做了最简单的事情。谢谢。我试过这个,它成功了。多亏了其他人的大量投入:)@sotapme问题在于HTML确实不利于正则表达式的使用。有一些库可以为您解析它,比如BeautifulSoup,这将使处理此问题的错误几率大大降低。虽然我原则上同意使用regexps来摸索HTML通常是个坏主意,但OP在文本外观方面非常具体,因此它实际上只是一个文本块,当然,如果它作为结构化文档跨HTML执行re
,那么这将是一个坏主意。如果我是OP,我可能会尝试使用HTML并从文档中获取text()
,以消除任何标记。