Python Show-Me-the-Code 第 0009 题 提取网页中的超

发布时间:2017-09-07 14:06:19
Python Show-Me-the-Code 第 0009 题 提取网页中的超链接

第 0009 题:一个HTML文件,找出里面的链接。

思路:对于提取网页中的超链接,先把网页内容读取出来,然后用beautifulsoup来解析是比较方便的。但是我发现一个问题,如果直接提取a标签的href,就会包含javascript:xxx和#xxx之类的,采集软件,所以要对这些进行特殊处理。

0009.提取网页中的超链接.py

#!/usr/bin/env python #coding: utf-8 from bs4 import BeautifulSoup import urllib import urllib2 import sys reload(sys) sys.setdefaultencoding("utf-8") # 要分析的网页url url = '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 alist if __name__ == '__main__': for i in findAllLink(url): print i

拿阮一峰博客上一篇文章测试,效果如下:

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:孝感SEO http://xiaogan.4567w.com