国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

基于requests實(shí)現(xiàn)極客學(xué)院課程爬蟲

2019-11-14 17:01:31
字體:
供稿:網(wǎng)友

背景

本文主要是為了完成極客學(xué)院課程《Python 單線程爬蟲》中講師布置的實(shí)戰(zhàn)作業(yè)。

開發(fā)環(huán)境

操作系統(tǒng):windows 10

Python :Python 2.7

IDE:PyCharm 4.5.3

安裝requests

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

pip install requests

實(shí)現(xiàn)代碼

# 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é)院課程信息保存完畢。' 

抓取結(jié)果示例

第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í)

……

結(jié)語

極客學(xué)院是個(gè)非常好的學(xué)習(xí)網(wǎng)站,大家可以點(diǎn)此鏈接獲取免費(fèi)的30天VIP福利。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 肥西县| 大悟县| 台北县| 襄汾县| 封开县| 县级市| 泉州市| 庆城县| 聊城市| 平果县| 措勤县| 西盟| 叙永县| 伊春市| 阜宁县| 牙克石市| 兴国县| 衡阳县| 沛县| 杭锦旗| 海晏县| 丹棱县| 辽阳市| 房产| 义乌市| 阿勒泰市| 西华县| 班戈县| 安徽省| 张家港市| 秦皇岛市| 阿瓦提县| 安平县| 榕江县| 陆良县| 民和| 道真| 永靖县| 康保县| 普宁市| 油尖旺区|