標籤:超連結 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 題 提取網頁中的超連結