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

原创 2015年05月08日 20:01:07

第 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



阮一峰博客上一篇文章测试,效果如下:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python:Dom解析XML文件(读XML)

这一篇文章接着前一篇来接续讲解如何使用Dom方式操作XML数据,这一篇文章主要介绍如何解析(parse)XML文件,本文实例XML文件是上一篇的生成的文件,我们看看能不能完整的读出来,这个XML文件内...

一个老程序员的发展方向和个人规划

         在IT业界,新人不断涌入,技术不断的更新。每天都要学习新的知识,每天都要看最新报道。我喜欢学习,对知识也有着渴望,但是我毕竟是一个平凡的人,有心情不好的时候,有不能坚持的时候,但是我...
  • loveis
  • loveis
  • 2006年11月10日 11:43
  • 8500

Python Show-Me-the-Code 第 0008 题 提取HTML正文内容

第 0008 题:一个HTML文件,找出里面的正文。思路:我把这里的正文理解为网页中我主要内容,那么怎么去抓取这个主要内容呢?我一开始的想法是用beautifulsoup来解析网页,但是又想到如果要抽...

Python Show-Me-the-Code 第 0001题

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 分析:激活码一般...

Python Show-Me-the-Code 第 0013 题 抓取妹子图片 使用scrapy

第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-) 参考代码 完整代码思路:其实这个可以不用scrapy,就用正则匹配+request应该就可以完成任务了。...

Python Show-Me-the-Code 第 0010 题 生成验证码图片

第 0010 题:使用 Python 生成类似于下图中的字母验证码图片 阅读资料 思路:先随机生成验证码,然后用Python的PIL库画出这个激活码的图片,具体点就是创建画布,加验证码的字上去,增加噪...

Python Show-Me-the-Code 第 0014,0015,0016 题 写Excel文件

第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示:{ "1":["张三",150,120,100], "2":["李四",90,99...

Python Show-Me-the-Code 第 0023 题 Web留言簿应用

第 0023 题: 使用 Python 的 Web 框架,做一个 Web 版本 留言簿 应用。阅读资料:Python 有哪些 Web 框架思路:Flask是一个使用 Python 编写的轻量级 Web...

Python Show-Me-the-Code 第 0006 题 最重要的词

第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。 思路:切换到目标目录,然后遍历该目录下的txt文件,用...

Python Show-Me-the-Code 第 0002题

第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。 分析:这题需要使用mysql数据库. 1.首先要下载mysql Window上安装My...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python Show-Me-the-Code 第 0009 题 提取网页中的超链接
举报原因:
原因补充:

(最多只允许输入30个字)