本文主要是為了完成極客學(xué)院課程《Python 單線程爬蟲》中講師布置的實(shí)戰(zhàn)作業(yè)。
操作系統(tǒng):windows 10
Python :Python 2.7
IDE:PyCharm 4.5.3
在CMD命令提示窗口敲以下一行命令即可安裝。
pip install requests
# coding=utf-8__author__ = 'scaleworld'import requestsimport reimport sysreload(sys)sys.setdefaultencoding("utf-8")class Spider: def __init__(self): PRint '開始爬取極客學(xué)院課程信息。。。' # 獲取源代碼 def getSource(self, url): html = requests.get(url) return html.text # 獲取每個(gè)課程塊信息 def getLessons(self, source): lessons = re.findall('deg="0" >(.*?)</li>', source, re.S) return lessons # 獲取課程信息,如課程名稱、課程介紹、課程時(shí)間、課程等級(jí)、學(xué)習(xí)人數(shù) def getLessonInfo(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() return info # 保存課程信息到文件LessionInfos.txt def saveLessionInfos(self, lessonInfos): # 'w':只寫,會(huì)覆蓋之前寫入的內(nèi)容 # 也可以用'a':追加到文件末尾 # 如果文件不存在,則自動(dòng)創(chuàng)建文件 f = open('LessionInfos.txt', 'w') i = 0 for each in lessonInfos: i += 1 f.writelines('第' + str(i) + '個(gè)課程:/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__': # 定義課程信息數(shù)組 lessonInfos = [] # 課程信息頁(yè)面url url = 'http://www.jikexueyuan.com/course/' # 實(shí)例化爬蟲 spider = Spider() # 取[1,21)及1到20頁(yè)的課程信息 for i in range(1, 21): # 構(gòu)建分頁(yè)URL pageUrl = url + '?pageNum=' + str(i) print '正在處理頁(yè)面:' + pageUrl source = spider.getSource(pageUrl) lessons = spider.getLessons(source) for lesson in lessons: 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__()) + '個(gè)課程信息。' print '極客學(xué)院課程信息爬取完畢,正在保存課程信息。。。' spider.saveLessionInfos(lessonInfos) print '極客學(xué)院課程信息保存完畢。'
第1個(gè)課程:
title:WordPress 主題模板文件
desc:本課程主要介紹構(gòu)成 WordPress 主題的模板文件,模板文件的引用和模板文件的層次體系。
time:3課時(shí)36分鐘
level:中級(jí)
learnNumber:2215人學(xué)習(xí)
第2個(gè)課程:
title:Android 開發(fā)規(guī)范
desc:本課程主要為大家講解在 Android 開發(fā)中搭建項(xiàng)目時(shí),整體的設(shè)計(jì)架構(gòu)風(fēng)格和規(guī)范以及基礎(chǔ)架構(gòu)、代碼命名和編寫規(guī)范等等。
time:3課時(shí)41分鐘
level:初級(jí)
learnNumber:2874人學(xué)習(xí)
……
極客學(xué)院是個(gè)非常好的學(xué)習(xí)網(wǎng)站,大家可以點(diǎn)此鏈接獲取免費(fèi)的30天VIP福利。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注