结语

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

背景本文主要是为了完成极客学院课程《Python 单线程爬虫》中讲师布置的实战作业。

开发环境操作系统:windows 10

Python :Python 2.7

IDE:PyCharm 4.5.3

安装requests在CMD命令提示窗口敲以下一行命令即可安装。

pipinstall requests

实现代码#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" >(.*?)</li>', source, re.S)returnlessons#获取课程信息,如课程名称、课程介绍、课程时间、课程等级、学习人数defgetLessonInfo(self, lesson):

info={}

info['title'] = re.search('<h2 class="lesson-info-h2"><a(.*?)>(.*?)</a></h2>', lesson, re.S).group(2).strip()

info['desc'] = re.search('<p style="height: 0px; opacity: 0; display: none;">(.*?)</p>', lesson, re.S).group(1).strip()

timeandlevel= re.findall('<em>(.*?)</em>', lesson, re.S)

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

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

info['learnNumber'] = re.search('"learn-number">(.*?)</em>', lesson, re.S).group(1).strip()returninfo#保存课程信息到文件LessionInfos.txtdefsaveLessionInfos(self, lessonInfos):#'w':只写,会覆盖之前写入的内容#也可以用'a':追加到文件末尾#如果文件不存在,则自动创建文件f = open('LessionInfos.txt','w')

i=0foreachinlessonInfos:

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 =[]#课程信息页面urlurl ='http://www.jikexueyuan.com/course/'#实例化爬虫spider =Spider()#取[1,21)及1到20页的课程信息foriinrange(1, 21):#构建分页URLpageUrl = url +'?pageNum='+str(i)print'正在处理页面:'+pageUrl

source=spider.getSource(pageUrl)

lessons=spider.getLessons(source)forlessoninlessons:

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'极客学院课程信息保存完毕。'

抓取结果示例第1个课程:

title:WordPress 主题模板文件

desc:本课程主要介绍构成 WordPress 主题的模板文件,模板文件的引用和模板文件的层次体系。

time:3课时36分钟

level:中级

learnNumber:2215人学习

第2个课程:

title:Android 开发规范

desc:本课程主要为大家讲解在 Android 开发中搭建项目时,整体的设计架构风格和规范以及基础架构、代码命名和编写规范等等。

time:3课时41分钟

level:初级

learnNumber:2874人学习

……

结语极客学院是个非常好的学习网站,大家可以点此链接获取免费的30天VIP福利。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航