Python语言程序设计之urllib.request抓取页面,网易公开课之《麻省理工学院公开课:算法导论》

Python语言用urllib.request模块抓取页面非常简单,再将抓取的页面内容用re模块解析,找出自己想要的东西。下面就就此方法来抓取网易公开课之《麻省理工学院公开课:算法导论》,解析页面内容,找出所有课程列表和相应的链接地址。

一、用urllib.request模块抓取页面

001

data = urllib.request.urlopen(url).read().decode()

二、用re模块解析页面内容

001

rslist = re.compile(pattern).findall(data)

下面就写成完整的示例代码,仅供参考:

001

002

003

004

005

006

007

008

009

010

011

012

013

014

015

016

import re

import urllib.request

 

url = "http://open.163.com/special/opencourse/algorithms.html"

data = urllib.request.urlopen(url).read().decode('GBK', "ignore")

 

pattern = '''<td class="u-ctitle">

                            (.*?)

                            <a href="(.*?)">(.*?)</a>

                                                        <img src=".*?" class="isyy"/>

                                                    </td>'''

rslist = re.compile(pattern).findall(data)

 

for rs in rslist:

    print(rs[0]+rs[2])

    print(rs[1])

运行结果如下:

001

002

003

004

005

006

007

008

009

010

011

012

013

014

015

016

017

018

019

020

021

022

023

024

025

026

027

028

029

030

031

032

033

034

035

036

037

038

039

040

041

042

043

044

045

046

[第1集]课程简介及算法分析

http://open.163.com/movie/2010/12/G/F/M6UTT5U0I_M6V2T1JGF.html

[第2集]渐近符号、递归及解法

http://open.163.com/movie/2010/12/2/E/M6UTT5U0I_M6V2T4T2E.html

[第3集]分治法(1)

http://open.163.com/movie/2010/12/8/U/M6UTT5U0I_M6V2T998U.html

[第4集]快排及随机化算法

http://open.163.com/movie/2010/12/S/4/M6UTT5U0I_M6V2T7IS4.html

[第5集]线性时间排序

http://open.163.com/movie/2010/12/7/V/M6UTT5U0I_M6V2TBK7V.html

[第6集]顺序统计、中值

http://open.163.com/movie/2010/12/J/J/M6UTT5U0I_M756SE0JJ.html

[第7集]哈希表

http://open.163.com/movie/2010/12/R/E/M6UTT5U0I_M6V2TG4RE.html

[第8集]全域哈希和完全哈希

http://open.163.com/movie/2010/12/3/A/M6UTT5U0I_M6V2TGI3A.html

[第9集]二叉搜索树

http://open.163.com/movie/2010/12/6/U/M6UTT5U0I_M6V2TGB6U.html

[第10集]平衡搜索树

http://open.163.com/movie/2010/12/9/J/M6UTT5U0I_M6V2TJ49J.html

[第11集]扩充的数据结构、动态有序统计和区间树

http://open.163.com/movie/2010/12/G/0/M6UTT5U0I_M6V2TSIG0.html

[第12集]跳跃表

http://open.163.com/movie/2010/12/7/S/M6UTT5U0I_M6V2TTJ7S.html

[第13集]平摊分析,表的扩增,势能方法

http://open.163.com/movie/2010/12/A/L/M6UTT5U0I_M6V2U1OAL.html

[第14集]竞争性分析,自组织表

http://open.163.com/movie/2010/12/I/2/M6UTT5U0I_M6V2U1BI2.html

[第15集]动态规划,最长公共子序列

http://open.163.com/movie/2010/12/L/4/M6UTT5U0I_M6V2U1HL4.html

[第16集]贪婪算法,最小生成树

http://open.163.com/movie/2010/12/1/S/M6UTT5U0I_M6V2U3R1S.html

[第17集]最短路径算法:Dijkstra算法,广度优先搜索

http://open.163.com/movie/2010/12/E/P/M6UTT5U0I_M6V2U4BEP.html

[第18集]最短路径算法:Bellman和差分约束系统

http://open.163.com/movie/2010/12/4/O/M6UTT5U0I_M6V2U754O.html

[第19集]最短路径算法:点的最短路径

http://open.163.com/movie/2010/12/8/H/M6UTT5U0I_M6V2UDN8H.html

[第20集]高级课题 并行算法(一)

http://open.163.com/movie/2010/12/V/E/M6UTT5U0I_M6V2UDUVE.html

[第21集]高级课题 并行算法(二)

http://open.163.com/movie/2010/12/0/B/M6UTT5U0I_M6V2UGJ0B.html

[第22集]高级课题 缓存参数无关算法

http://open.163.com/movie/2010/12/L/L/M6UTT5U0I_M6V2UIKLL.html

[第23集]缓存无关算法2

http://open.163.com/movie/2010/12/E/1/M6UTT5U0I_M6V2UI5E1.html

抓取到23集,这正是我们所需要的结果,至此大功告成~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值