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

发布于 2021-01-29 14:59:23

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

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

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

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

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

提前致谢

关注者
0
被浏览
74
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    感谢所有的答复。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看