网络爬虫

第一部分:

请分析作业页面,爬取已提交作业信息,并生成已提交作业名单,保存为英文逗号分隔的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    —— 内置库
代码如下:
import requests
import json
s=""
url="https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1542959851766"
a=requests.get("https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1542959851766")
datas=json.loads(a.text)['data']
#状态码为200才继续进行爬取,否则报错
if a.status_code==200:
    a.encoding=a.apparent_encoding     
    for d in datas:#将需要的各个数据加入到s中
        s+= str(d['StudentNo'])+','+d['RealName']+','+d['DateAdded']+','+d['Title']+','+d['Url']+'\n'                
        f=open('hwlist.csv','w')
        f.write(s)
        f.close()
else:
    print("404")

  结果展示:

第二部分:

在生成的 hwlist.csv 文件的同文件夹下,创建一个名为 hwFolder 文件夹,为每一个已提交作业的同学,新建一个以该生学号命名的文件夹,将其作业网页爬去下来,并将该网页文件存以学生学号为名,“.html”为扩展名放在该生学号文件夹中。

代码如下:

import requests
import json
import os
s=""
url="https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1542959851766"
a=requests.get("https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=2420&_=1542959851766")
datas=json.loads(a.text)['data']
#状态码为200才继续进行爬取,否则报错
if a.status_code==200:
    a.encoding=a.apparent_encoding     
    for d in datas:#将需要的各个数据加入到s中
        s+= str(d['StudentNo'])+','+d['RealName']+','+d['DateAdded']+','+d['Title']+','+d['Url']+'\n'   
        f=open('D:\hwlist.csv','w')
        f.write(s)
        f.close()
else:
    print("404")
    #抓取页面
if a.status_code==200:
    a.encoding=a.apparent_encoding  
    #创建文件夹hwFolder
    os.mkdir('hwFolder')
    os.chdir('hwFolder')
    for d in datas: #创建目录
        os.mkdir(str(d['StudentNo']))
        os.chdir(str(d['StudentNo']))
    #保存抓到的页面
        b=''
        b+=str(d['StudentNo'])+'.html'
        b.write(a.content)
        os.chdir(os.path.pardir)
        os.chdir('hwFolder')

  结果:

结果出错了,怪自己学艺不精,原因我自己分析不出来,只能这样了

 

posted on 2018-12-07 23:11  automationGo  阅读(136)  评论(0编辑  收藏  举报

导航