# coding: utf-8 import requests import re import sys reload(sys) sys.setdefaultencoding("utf-8") class Spider(object): def __init__(self, retfile): self.retfile = retfile print 'spider man is ready...' self.urls = [] self.data = '' self.page = '0' def getPage(self, urlbase='http://www.jikexueyuan.com/course/?pageNum=', pagenum='1'): for i in range(1, pagenum): self.urls.append(urlbase + str(i)) def showPage(self): for link in self.urls: print 'url:', link def getHtml(self, url): print 'url', url self.page = str(re.findall(r'pageNum=(\d+)', url)[0]) html = requests.get(url) if html: pagenum = 'pagedir/'+ "page" + self.page + '.html' with open(pagenum, 'w') as f: f.write(html.text) # print html.text return html.text else: print 'not foud' return False def gettiltle(self, html): self.title = re.findall(r'class="lessonimg" title="(.*?)"', html, re.S) for i in self.title: print i def getlearnnum(self, html): self.learnum = re.findall(r'<em class="learn-number">(.*?)</em>', html, re.S) for i in self.learnum: print i def gettime(self, html): print 'time' def getlevel(self, html): self.level = re.findall(r'<em>(.*?)</em>', html, re.S) for i in self.level: print 'level:', i def getinfo(self, html): self.gettiltle(html) self.getlearnnum(html) self.gettime(html) self.getlevel(html) def test(self): # jkxyspider.showPage() print '-' * 20 # http: // www.jikexueyuan.com / course /?pageNum = 3 # http: // www.jikexueyuan.com / course /?page = 15 ---> is errxxx... html = self.getHtml('http://www.jikexueyuan.com/course/?pageNum=1') with open('page1.html', 'w') as f: f.write(html) self.getinfo(html) print 'test ok ' def main(fp): jkxyspider = Spider(fp) jkxyspider.getPage('http://www.jikexueyuan.com/course/?pageNum=', 20) # jkxyspider.test() for url in jkxyspider.urls: print url html = jkxyspider.getHtml(url) if html: try: jkxyspider.getinfo(html) print 'test ok ' except IndexError, e: print 'Error:', e continue if __name__ == '__main__': with open('spiderinfo.txt','w') as f: main(f)
-----------------------------------------------------------------html
运行结果:/usr/bin/python2.7 /home/hyh/github/python/ide/part2/爬虫实战3.py
spider man is ready...
http://www.jikexueyuan.com/course/?pageNum=1
url http://www.jikexueyuan.com/course/?pageNum=1
Android 快速开发框架之 xUtils3
Microsoft SQL Server 数据库的查询优化器的运行方式
树莓派项目实践(一)——可用 web 控制的人体感应小夜灯
Docker 安装
Cocos2d-x 引擎源码中的纹理
Dubbo 使用入门(下)
JavaScript 异步编程
Google I/O 2016 技术揭秘与前瞻
Docker 基础知识
OSG人机交互
Arduino 模拟鼠标键盘(二)
Flume 基础架构
一元线性回归
Cocos2d-x 引擎源码中的 OpenGL ES知识(下)
编程之美“凌云之智“线上分享之 Azure 线上培训及工程师答疑
Launcher3-文件夹自动整理
iOS 封装第三方支付 SDK
物联网技术导论(十一)物联网中的信息安全与隐私保护
C 语言编程实战:学生信息管理系统(下)
名企数据结构面试题之 DFS(上)
Tornado 开发--TCP 编程
编程之美“凌云之智“线上分享之复赛题目提点
立刻着手 Swift 开发 - 踏上 Swift 征程
Hadoop MapReduce 进阶
2768人学习
2459人学习
3065人学习
2882人学习
2370人学习
2963人学习
4463人学习
7351人学习
3584人学习
2574人学习
2596人学习
2732人学习
2472人学习
2359人学习
3185人学习
3009人学习
2859人学习
2490人学习
4287人学习
2418人学习
2509人学习
2874人学习
2407人学习
2485人学习
time
level: 6课时
95分钟
level: 初级
level: 3课时
58分钟
level: 中级
level: 4课时
67分钟
level: 中级
level: 3课时
21分钟python