查看原文
其他

线上Python课程都面向哪些方向?

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:张馨月

文字编辑:朱巧利

技术总编:张计宝

导读

Python可以说是当下最为热门的编程语言之一,受疫情的影响各行各业都加入到了Python的学习队伍当中,互联网上以Python为主题的课程也层出不穷。那么这些五花八门的课程都主要面向哪些方向呢?今天小编就带大家爬取腾讯课堂及网易云课堂的Python课程标题并从中进行分析~


1.课程标题爬取


我们首先爬取腾讯课堂Python课程的题目(https://ke.qq.com/course/list/python)。点击F12进入开发者模式,可以看到该网页的请求方式为get。同时,查看该网页的源代码可以看到标题都包含在”class="item-tt-link" title=”字段中。


因此我们可以直接copy源代码并导入Stata中进行提取。

copy "https://ke.qq.com/course/list?mt=1001&st=2007&page=1" temp.txt,replaceimport delimited using temp.txt,clear encoding("utf-8")keep if ustrregexm(v1,`"class="item-tt-link" "')gen url=ustrregexs(1) if ustrregexm(v1,`"a href="(.+?)""')gen title=ustrregexs(1) if ustrregexm(v1,`" title="(.+?)""')
使用上述方法只能得到单个网页的内容。为了得到所有网页的信息,需要以页码进行循环来爬取。目前网页上显示的页数为共34页,但是当我们在地址栏输入page=35时,页面仍会显示内容,因此我们无法像往常那样根据页面的源代码差异确定页数。



不过,通过观察第一页的源代码,可以发现总页数存放在json格式字段的关键字”total_page”中。

因此我们可以从这里提取,代码如下:

gen page=ustrregexs(1) if ustrregexm(v1,`""total_page":(.+?),"')keep if page !=""destring page,replacelocal p=page[1]

这样,我们便可以遍历页码进行循环提取:

local p=page[1]forvalues i=1/`p'{ copy "https://ke.qq.com/course/list?mt=1001&st=2007&tt=3036&page=`i'" temp.txt,replace import delimited using temp.txt,clear encoding("utf-8") keep if ustrregexm(v1,`"class="item-tt-link" "') gen title=ustrregexs(1) if ustrregexm(v1,`" title="(.+?)""') drop v1 save `i',replace}

部分结果截图如下:



对于网易云课堂python课程的爬取,我们同样先查看开发者工具的请求方式与源代码中的内容,结果可以看到该网页的请求方式为post,且源代码中没有包含我们需要的信息。进一步观察开发者工具的XHR文件,可以看到studycourse.json中保留了我们需要的信息。但由于网站的设计,我们没有办法查看其中的内容,打开链接得到的内容如下:

因此这部分的内容使用Python中的selenium模拟网站,并使用xpath爬取,相关方法的介绍可以参考推文《Python爬虫之selenium爬取国家自然科学基金数据库(一)》《XPath HelperXPath爬虫一臂之力》,这里不详细列出爬取过程。


2.词云图绘制


首先,我们将爬取网易云课堂得到的文件wy_title.xlsx与爬取腾讯课堂得到的dta文件进行合并,并导出为txt文件用于分词。

import excel using wy_title,first cleardrop Afs *.dtaforeach file in `r(files)'{ append using `file'}replace title=ustrregexra(title,"【.+】","")export delimited using title.txt,replace

接下来,调用Python中的jieba模块进行分词,详细用法可参考推文《高亮输出之唐诗作者》《从流调数据中寻找感染真相》,由于直接使用jieba分词无法识别“大数据”“机器学习”这类词汇,我们可以使用jieba.load_userdict自定义一个词典来辅助分词。程序如下:

clear allpythonimport jiebacourse=[]with open(r"title.txt",encoding="utf8") as f: for i in f.readlines(): str=i course.append(str) jieba.load_userdict(r"tsdict.txt") #添加自定义词典with open("分词.txt","w",encoding="utf8") as f2: for unit in course: seg_list = jieba.cut(unit) for word in seg_list: f2.write(word+"\n")end

此时我们得到了初步的分词结果,但从下图所示的部分截图中可以看到,结果中保留了一些单字、缺失值等“噪声”:

所以我们需要把这些不需要的内容进行剔除,并对结果进行词频统计,删掉频率小于5的单词。

import delimited using 分词.txt, clear encoding("utf-8")rename v1 keyworddrop if ustrlen(keyword) == 1 // 删除单字drop if keyword =="" //删除缺失值preserveimport delimited using 停用词表.txt, clear /// encoding("utf-8") varname(nonames)outsheet using 停用词表.txt, replace nonames noquotelevelsof v1, local(keyword)restoreforeach word in `keyword' { drop if keyword == "`word'" //删除停用词}levelsof keyword, local(keyword)bysort keyword: gen frequency = _Ngsort -frequencyduplicates drop //删除重复词drop if frequency < 5 //删除出现频率小于5的词

最后使用wordcloud命令,便可绘制出词云图:

wordcloud keyword frequency using 词云.html, replace /// size(15 80) range(3840 2160)shellout 词云.html

从图上可以看到,和Python一起出现频率最高的词语是大数据,与之相关的数据库和框架包括MySQLOracleSparkStormHadoop等。具体来看,现有的线上课程既包含入门课程,也涉及网络爬虫、数据分析与处理、机器学习、web开发等具体方向,还有一些课程专门针对于金融量化与企业办公,从中可以看到Python的应用领域还是很广的,大家在掌握基础知识后最好可以针对自己的应用领域确定学习路径。除了这些线上课程外,廖雪峰老师的网站、GitHub社区、CSDN网站以及我们的公众号也会分享与Python相关的内容,对Python感兴趣的小伙伴快快行动起来吧~






对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
子类与父类
用requests库爬取淘宝数据
WordStat—Stata的文本分析小助手
数据筛选理还乱,datacheck能诊断

如何用简单的手法绘制出不一样的海外疫情趋势图

matplotlib绘制数学函数
gen的再进化
Stata版大家来找茬—cfout就够了
另辟蹊径js逆向爬取百度翻译
可迭代对象、迭代器、生成器傻傻分不清楚
Ftools命令组之fegen命令介绍
提升效率的利器——如何用labvarch批量修改变量标签
二进制序列类型——bytes()、bytearray()
今日头条海外疫情数据爬取
anythingtodate带你轻松处理日期
_variables介绍
查询12306车次信息

关于我们



微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存