羊车门作业已发布,很快就会有同学提交作业,在此作业基础上,我们发布本网络爬虫作业。
本作业共分两部分,第一部分必做,第二部分选作。
第一部分
请分析作业页面,爬取已提交作业信息,并生成已提交作业名单,保存为英文逗号分隔的csv文件。文件名为:hwlist.csv 。
文件内容范例如下形式:
学号,姓名,作业标题,作业提交时间,作业URL
*注1:如制作定期爬去作业爬虫,请注意爬取频次不易太过密集;
*注2:本部分作业用到部分库如下所示:
(1)requests —— 第3方库
(2)json —— 内置库
第二部分:
在生成的 hwlist.csv 文件的同文件夹下,创建一个名为 hwFolder 文件夹,为每一个已提交作业的同学,新建一个以该生学号命名的文件夹,将其作业网页爬去下来,并将该网页文件存以学生学号为名,“.html”为扩展名放在该生学号文件夹中。
首先使用开发者工具获取所需爬取的url,如图所示
查看数据类型为json格式,看之前各位大佬的博客叫json数据类型,
用json库loads转换为dict数据格式取出每一个元素,再打开文件写入数据,
importrequestsimportjsontry:
r=requests.get('https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1544072161608')
r.raise_for_status()
r.encoding=r.apparent_encoding
datas=json.loads(r.text)['data']except:print("网络错误")else:
crawl=''
for data indatas:
crawl+=str(data["StudentNo"])+","+data["RealName"]+","+data["DateAdded"].replace("T"," ")+","+data["Title"]+","+data["Url"]+"\n"with open ('hwlist.csv','w') as f:
f.write(crawl)
以上是源代码,下面是结果