Python Show-Me-the-Code 第 0009 題 提取網頁中的超連結

來源:互聯網
上載者:User

標籤:超連結   python   網頁   

第 0009 題:一個HTML檔案,找出裡面的連結

思路:對於提取網頁中的超連結,先把網頁內容讀取出來,然後用beautifulsoup來解析是比較方便的。但是我發現一個問題,如果直接提取a標籤的href,就會包含javascript:xxx和#xxx之類的,所以要對這些進行特殊處理。

0009.提取網頁中的超連結.py

#!/usr/bin/env python#coding: utf-8from bs4 import BeautifulSoupimport urllibimport urllib2import sysreload(sys)sys.setdefaultencoding("utf-8")# 要分析的網頁urlurl = ‘http://www.ruanyifeng.com/blog/2015/05/co.html‘def findAllLink(url):    ‘‘‘    提取網頁中的超連結    ‘‘‘    # 擷取協議,網域名稱    proto, rest = urllib.splittype(url)    domain = urllib.splithost(rest)[0]    # 讀取網頁內容    html = urllib2.urlopen(url).read()    # 提取超連結    a = BeautifulSoup(html).findAll(‘a‘)    # 過濾    alist = [i.attrs[‘href‘] for i in a if i.attrs[‘href‘][0] != ‘j‘]    # 將形如#comment-text的錨點補全成http://www.ruanyifeng.com/blog/2015/05/co.html,將形如/feed.html補全為http://www.ruanyifeng.com/feed.html    alist = map(lambda i: proto + ‘://‘ + domain + i if i[0] == ‘/‘ else url + i if i[0] == ‘#‘ else i, alist)    return alistif __name__ == ‘__main__‘:    for i in findAllLink(url):        print i

拿阮一峰部落格上一篇文章測試,效果如下:

Python Show-Me-the-Code 第 0009 題 提取網頁中的超連結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.