[关闭]
@bergus 2015-12-02T06:05:10.000000Z 字数 846 阅读 2635

python笔记之提取网页中的超链接

python 爬虫


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

  1. #!/usr/bin/env python
  2. #coding: utf-8
  3. from bs4 import BeautifulSoup
  4. import urllib
  5. import urllib2
  6. import sys
  7. reload(sys)
  8. sys.setdefaultencoding("utf-8")
  9. # 要分析的网页url
  10. url = 'http://www.ruanyifeng.com/blog/2015/05/co.html'
  11. def findAllLink(url):
  12. '''
  13. 提取网页中的超链接
  14. '''
  15. # 获取协议,域名
  16. proto, rest = urllib.splittype(url)
  17. domain = urllib.splithost(rest)[0]
  18. # 读取网页内容
  19. html = urllib2.urlopen(url).read()
  20. # 提取超链接
  21. a = BeautifulSoup(html).findAll('a')
  22. # 过滤
  23. alist = [i.attrs['href'] for i in a if i.attrs['href'][0] != 'j']
  24. # 将形如#comment-text的锚点补全成http://www.ruanyifeng.com/blog/2015/05/co.html,将形如/feed.html补全为http://www.ruanyifeng.com/feed.html
  25. alist = map(lambda i: proto + '://' + domain + i if i[0] == '/' else url + i if i[0] == '#' else i, alist)
  26. return alist
  27. if __name__ == '__main__':
  28. for i in findAllLink(url):
  29. print i
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注