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集,這正是我們所需要的結果,至此大功告成~~~
總結
以上是生活随笔為你收集整理的Python语言程序设计之urllib.request抓取页面,网易公开课之《麻省理工学院公开课:算法导论》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美媒:中国大陆最火的工作,教人工智能识图
- 下一篇: 什么是“根”?没有多少人思考,万物的“根