@bergus
2015-12-02T06:05:10.000000Z
字数 846
阅读 2865
python 爬虫
对于提取网页中的超链接,先把网页内容读取出来,然后用beautifulsoup来解析是比较方便的。但是我发现一个问题,如果直接提取a标签的href,就会包含javascript:xxx和#xxx之类的,所以要对这些进行特殊处理。
#!/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.htmlalist = 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
