一尘不染

使用Python获取HTML文件上所有标签中的href属性值

python

我正在用python构建应用程序,我需要在一个网页中获取所有链接的URL。我已经有一个使用urllib从Web下载html文件并将其转换为具有readlines()的字符串列表的函数。

目前,我有使用正则表达式的代码(我不太擅长)以搜索每一行中的链接:

for line in lines:
    result = re.match ('/href="(.*)"/iU', line)
    print result

这是行不通的,因为它只为文件中的每一行打印“ None”,但是我确定打开的文件上至少有3个链接。

有人可以给我一个提示吗?

提前致谢


阅读 241

收藏
2021-01-20

共1个答案

一尘不染

好吧,为了完整起见,我将在这里添加我发现的最佳答案,并在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

感谢所有的答复。

2021-01-20