爬虫作业
第一部分:
请分析作业页面,爬取已提交作业信息,并生成已提交作业名单,保存为英文逗号分隔的csv文件。文件名为:hwlist.csv 。
文件内容范例如下形式:
学号,姓名,作业标题,作业提交时间,作业URL
20194010101,张三,羊车门作业,2018-11-13 23:47:36.8,http://www.cnblogs.com/sninius/p/12345678.html
20194010102,李四,羊车门,2018-11-14 9:38:27.03,http://www.cnblogs.com/sninius/p/87654321.html
*注1:如制作定期爬去作业爬虫,请注意爬取频次不易太过密集;
*注2:本部分作业用到部分库如下所示:
(1)requests —— 第3方库
(2)json —— 内置库
第二部分:
在生成的 hwlist.csv 文件的同文件夹下,创建一个名为 hwFolder 文件夹,为每一个已提交作业的同学,新建一个以该生学号命名的文件夹,将其作业网页爬去下来,并将该网页文件存以学生学号为名,“.html”为扩展名放在该生学号文件夹中。
我要先声明的是,这份作业我并不是独立完成的。我看了助教马孟林大佬提交的作业,写的非常详细,不过我仍然花了一个多小时才敲出第一部分内容的代码
import requests import json URL='https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1542959851766' try: r = requests.get(URL,timeout=1) r.raise_for_status() r.encoding = r.apparent_encoding except: print('网络异常或页面未找到,请重试') datas=json.loads(r.text)['data'] #json.loads将字符串转为字典 results="" for data in datas: results=results+ str(data['StudentNo'])+','+data['RealName']+','+data['Title']+','+data['DateAdded'].replace('T',',')+','+data['Url']+'\n' with open('hwlist.csv','w') as f: f.write(results)
爬取结果如下:

关于爬到的作业提交时间格式有一个问题,这里的.replace('T',', ')如果改为.repalce('T',' '),单引号里将逗号改为空格(手敲的空格),就会出现问题
results=results+ str(data['StudentNo'])+','+data['RealName']+','+data['Title']+','+data['DateAdded'].replace('T',',')+','+data['Url']+'\n'

浙公网安备 33010602011771号