• 039 爬取json数据以HTML形式到本地


    039 爬取json数据以HTML形式到本地

    上节课内容

    #037学习Python爬虫爬取博客园作业

    本节课内容

    爬取数据保存到本地

    解析json数据

    介绍HTML

    json数据保存为HTML并加上超链接

    爬取数据

    直接使用上节课代码
    把文件保存到以.html结尾的文件中

    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')

    保存文件
    保存文件

    解析json数据

    引入json库

    import json

    举一反三
    为何想到引用json库?
    1.首先 具有基本的背景知识,知道数据类型为json
    2.结合 python 语言的特点 第三方库众多
    3.在搜索引擎搜索 python json相关信息

     python json相关信息
    python json相关信息

    4.根据搜索引擎的返回结果即可确定存在json库可以使用

    使用json.loads()解析字符串

    l=json.loads(r.text)

    使用json库中loads函数,将r.text字符串解析成dict字典格式,存储于l中

    解析后字典的使用

    l为字典型
    l的类型
    遍历l的字典中的键值对
    l 存在三种键值对,data,recordsTotal,recordsFiltered
    从英文翻译中我们就能知道,数据在l[“data”]中

    i存在三个键值对
    i存在三个键值对

    所以我们遍历l[“data”]

    发现我们每个l["data"]里面存储的是列表。

    遍历l[“data”]
    遍历l[“data”]

    通过遍历输出列表里第一个字典元素,输出了所有key

    列表遍历
    列表遍历

    根据英语翻译我们很容易就找到了数据内部的
    链接 ,姓名,学号和上交时间分别为
    i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']

    介绍HTML

    HTML最最最基础

    HTML 以'<html>'</html>'内部存放头<head>和<head> 和身体<body><ody>

    简单的HTML结构
    简单的HTML结构

    我们把数据存储在body里面就可以了

    存储在<p><p>段落标签里

    超链接使用

    <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文件内

    json数据保存为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()
    
  • 相关阅读:
    回调函数
    未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包
    顶帽变化(转载)
    协程 + asyncio
    docker
    vue+uwsgi+nginx部署前后端分离项目
    html
    关于html的基础标签
    关于python中的GIL
    hashlib模块
  • 原文地址:https://www.cnblogs.com/hx97/p/10869380.html
Copyright © 2020-2023  润新知