#coding=utf-8

__author__ = 'scaleworld'

importrequestsimportreimportsys

reload(sys)

sys.setdefaultencoding("utf-8")classSpider:def __init__(self):print '开始爬取极客学院课程信息。。。'

#获取源代码

defgetSource(self, url):

html=requests.get(url)returnhtml.text#获取每个课程块信息

defgetLessons(self, source):

lessons= re.findall('deg="0" >(.*?)', source, re.S)returnlessons#获取课程信息,如课程名称、课程介绍、课程时间、课程等级、学习人数

defgetLessonInfo(self, lesson):

info={}

info['title'] = re.search('

(.*?)

', lesson, re.S).group(2).strip()

info['desc'] = re.search('

(.*?)

', lesson, re.S).group(1).strip()

timeandlevel= re.findall('(.*?)', lesson, re.S)

info['time'] = timeandlevel[0].strip().replace("\n", "").replace(" ", "")

info['level'] = timeandlevel[1].strip()

info['learnNumber'] = re.search('"learn-number">(.*?)', lesson, re.S).group(1).strip()returninfo#保存课程信息到文件LessionInfos.txt

defsaveLessionInfos(self, lessonInfos):#'w':只写,会覆盖之前写入的内容

#也可以用'a':追加到文件末尾

#如果文件不存在,则自动创建文件

f = open('LessionInfos.txt', 'w')

i=0for each inlessonInfos:

i+= 1f.writelines('第' + str(i) + '个课程:\n')

f.writelines('title:' + each['title'] + '\n')

f.writelines('desc:' + each['desc'] + '\n')

f.writelines('time:' + each['time'] + '\n')

f.writelines('level:' + each['level'] + '\n')

f.writelines('learnNumber:' + each['learnNumber'] + '\n\n')

f.close()if __name__ == '__main__':#定义课程信息数组

lessonInfos =[]#课程信息页面url

url = 'http://www.jikexueyuan.com/course/'

#实例化爬虫

spider =Spider()#取[1,21)及1到20页的课程信息

for i in range(1, 21):#构建分页URL

pageUrl = url + '?pageNum=' +str(i)print '正在处理页面:' +pageUrl

source=spider.getSource(pageUrl)

lessons=spider.getLessons(source)for lesson inlessons:

lessonInfo=spider.getLessonInfo(lesson)

lessonInfos.append(lessonInfo)#print 'title:'+lessonInfo.get('title')

#print 'desc:'+lessonInfo.get('desc')

#print 'time:'+lessonInfo.get('time')

#print 'level:'+lessonInfo.get('level')

#print 'learnNumber:'+lessonInfo.get('learnNumber')

print '已处理' + str(lessons.__len__()) + '个课程信息。'

print '极客学院课程信息爬取完毕,正在保存课程信息。。。'spider.saveLessionInfos(lessonInfos)print '极客学院课程信息保存完毕。'

python极客学院爬虫_基于requests实现极客学院课程爬虫相关推荐

  1. 爬虫系统基础框架 何时使用爬虫框架? requests库 + bs4来实现简单爬虫

    转载请注明出处https://www.cnblogs.com/alexlee666/p/10180519.html,谢谢! 文中图片来自于我的简书博客. 一. 爬虫用途和本质: 网络爬虫顾名思义即模仿 ...

  2. python flask实现博客系统_基于Flask的博客网站设计与实现

    涂远杰 郑剑 摘要:该博客系统是一款分享型博客,注重个人的学习心得.生活等方面的记录.后台基于Python中的Flask框架开发,还涉及爬虫,数据库使用的是轻型的SQLite,同时,前端页面的实现涉及 ...

  3. python重启路由器_Python3控制路由器——使用requests重启极路由.py

    通过本文给大家介绍Python3控制路由器--使用requests重启极路由.py的相关知识,代码写了相应的注释,以后再写成可以方便调用的模块. 用fiddler抓包可以看到很多HTTP头,经过尝试发 ...

  4. 客制化键盘编程_基于3D打印的客制化机械键盘设计与实现

    龙源期刊网 http://www.qikan.com.cn 基于 3D 打印的客制化机械键盘设计与实现 作者:许玺风 毛凌志 来源:<科学与财富> 2020 年第 03 期 摘 要:本文首 ...

  5. jsp+mysql汽车维修管理系统的设计与开发_基于JSP+MySQl的计算机学院设备报修管理系统.doc...

    基于JSPMySQl的计算机学院设备报修管理系统 毕业设计 基于JSP+MySQl的计算机学院设备报修管理系统 大学 年6月 毕业设计 基于JSP+MySQl的计算机学院设备报修 管理系统 学 生: ...

  6. scrapy微博反爬虫_基于Scrapy的微博爬虫设计

    Data Base Technique • 数据库技术 Electronic Technology & Software Engineering 电子技术与软件工程 • 187 [关键词]Sc ...

  7. 基于计算思维的python程序设计王彬丽期末考试题库_基于计算思维的程序设计类课程教学实践...

    基于计算思维的程序设计类课程教学实践 滕剑锋 王玉锋 王 猛 刘二林 [摘 要] 摘 要 很多专业开设了程序设计类课程.如何在该课程教学中培养学 生的创新能力是大家普遍考虑的问题.计算思维的提出对于解 ...

  8. php博客系统答辩问题,基于PHP个人博客的设计与实现毕业设计答辩 PPT课件

    <基于PHP个人博客的设计与实现毕业设计答辩 PPT课件>由会员分享,可在线阅读,更多相关<基于PHP个人博客的设计与实现毕业设计答辩 PPT课件(31页珍藏版)>请在人人文库 ...

  9. 单片机8位抢答器实训机电报告_基于单片机89c51八路抢答器课程设计报告.doc

    基于单片机89c51八路抢答器课程设计报告 中州大学工程技术学院 单片机课程设计报告书 题目:基于单片机89c51 8路抢答器 姓 名: 阮成龙 专 业:电气自动化(对口)一班 学 号: 201425 ...

最新文章

  1. ASP.NET WebAPi之断点续传下载(下)
  2. linux 找不到动态链接库 .so文件的解决方法
  3. github添加图片
  4. build muduo网络库undefined reference to问题
  5. php检测类是否存在,php判断类是否存在函数class_exists用法分析
  6. PHP也能实现区块链?基础结构篇
  7. [PTA]L2-001 紧急救援 (25 分)
  8. python可变数据类型与不可变数据类型
  9. ssl2331OJ1373-鱼塘钓鱼 之1【纯贪心】
  10. android app功能测试,androidAPP功能测试要点幻灯片.pptx
  11. 简单类名转为class_13 网页各区域div的常见类名
  12. 第四章 《无冬之夜》
  13. 又挖到宝藏了,低调使用
  14. 机器视觉检测技术之颜色视觉工具应用
  15. 基于网络爬虫技术的网络新闻分析
  16. 计算机考研复试_数据库
  17. flutter 如何获取屏幕的尺寸
  18. linux下打包C++ Qt可执行程序出现的问题总结
  19. 4种FPGA时钟分频 【附源码】:1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;
  20. SnowField目标效果2-6:斜面移动2更真实的斜坡

热门文章

  1. 3.HTML文本(标题、水平线、换行、加粗)
  2. python/folium绘制中国人口数量热力图(HeatMap)
  3. 表情可字怎么打_微信新表情十款默认上线,手把手教你用,吃瓜加油汗天啊Emm社会社会旺柴好的打脸哇...
  4. 湾区码农最IN的周末健康零食清单,好吃不长肉,简直不能太美!
  5. 基于 MaxCompute 的智能推荐解决方案
  6. 小米加密兔和百度莱茨狗怎么玩?莱茨狗和加密兔怎么注册
  7. win10下使用粘贴板历史记录
  8. Dymola求解器介绍
  9. 一、 计算机的体系结构
  10. educoder-Spark GraphX—寻找社交媒体中的“影响力用户”