我正在用python构建应用程序,我需要在一个网页中获取所有链接的URL。我已经有一个使用urllib从Web下载html文件并将其转换为具有readlines()的字符串列表的函数。
目前,我有使用正则表达式的代码(我不太擅长)以搜索每一行中的链接:
for line in lines: result = re.match ('/href="(.*)"/iU', line) print result
这是行不通的,因为它只为文件中的每一行打印“ None”,但是我确定打开的文件上至少有3个链接。
有人可以给我一个提示吗?
提前致谢
好吧,为了完整起见,我将在这里添加我发现的最佳答案,并在Mark Pilgrim的Dive Into Python一书中找到它。
以下是用于列出网页中所有URL的代码:
from sgmllib import SGMLParser class URLLister(SGMLParser): def reset(self): SGMLParser.reset(self) self.urls = [] def start_a(self, attrs): href = [v for k, v in attrs if k=='href'] if href: self.urls.extend(href) import urllib, urllister usock = urllib.urlopen("http://diveintopython.net/") parser = urllister.URLLister() parser.feed(usock.read()) usock.close() parser.close() for url in parser.urls: print url
感谢所有的答复。