直接使用上节课代码
把文件保存到以.html结尾的文件中python
import requests
url = 'https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=3103&_=1557235742010'
try:
r = requests.get(url,timeout=20)
r.raise_for_status()
r.encoding = r.apparent_encoding
except:
print('网络异常或页面未找到,请重试')
f=open('homework.html','w')
import json
触类旁通
为什么想到引用json库?
1.首先 具备基本的背景知识,知道数据类型为json
2.结合 python 语言的特色 第三方库众多
3.在搜索引擎搜索 python json相关信息json
l=json.loads(r.text)
使用json库中loads函数,将r.text字符串解析成dict字典格式,存储于l中网络
l为字典型
遍历l的字典中的键值对
l 存在三种键值对,data,recordsTotal,recordsFiltered
从英文翻译中咱们就能知道,数据在l[“data”]中app
发现咱们每一个l["data"]里面存储的是列表。svg
经过遍历输出列表里第一个字典元素,输出了全部key函数
根据英语翻译咱们很容易就找到了数据内部的
连接 ,姓名,学号和上交时间分别为
i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']学习
HTML 以'<html>'</html>'内部存放头<head>和<\head> 和身体<body><\body>搜索引擎
咱们把数据存储在body里面就能够了url
超连接使用
<a href=\"{网页连接}\"target=\"_blank\" >链接 </a>
存储思路
使用字符串headers存储
header=''' <html> <head> <title>爬虫做业</title></head> <body> '''
字符串footer存储
footer=''' </body> </html> '''
数据内容存储到body内
body=body+("<p><a href=\"{}\"target=\"_blank\" >链接 </a>姓名 {}学号{} 时间{}</p>".format(i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']))
最后将字符串header+body+footer存储到.html文件内
import requests
import json
url = 'https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=3103&_=1557235742010'
try:
r = requests.get(url,timeout=20)
r.raise_for_status()
r.encoding = r.apparent_encoding
except:
print('网络异常或页面未找到,请重试')
f=open('homework.html','w')
l=json.loads(r.text)
header=''' <html> <head> <title>爬虫做业</title></head> <body> '''
footer=''' </body> </html> '''
body=''
for i in l["data"]:
body=body+("<p><a href=\"{}\"target=\"_blank\" >链接 </a>姓名 {}学号{} 时间{}</p>".format(i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']))
print ("<p>链接 {}姓名 {}学号{} 时间{}</p>".format(i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']))
s=header+body+footer
f.write(s)
f.close()