【网络安全带你练爬虫-100练】第8练:json数据的最小项提取

目录

一、目标1:爬取指定json中数据

二、目标2:循环取json中数据

三、目标3:提取每个数据中的某一项

四、网络安全小圈子


一、目标1:爬取指定json中数据

爬取data里数据

 


核心代码:

        dirt1 = json.loads(res.text)
        print(dirt1['data'])

(1)json.loads()方法可用于解析有效的JSON字符串并将其转换为Python字典

(2)dirt1['data']是打印json中的data部分


运行结果:

完成了爬取

 


代码:

import requests
import json
from fake_useragent import UserAgent

def get_json():
    try:
        url = 'https://napi-huawei.tianyancha.com/next/web/home/vajialist?_=1688703382196'
        ua = UserAgent()
        headers = {
            'User-Agent': ua.chrome,
        }
        res = requests.get(url, headers=headers,timeout=10)
        dirt1 = json.loads(res.text)
        print(dirt1['data'])

    except:
        return ""


if __name__ == '__main__':
    get_json()



二、目标2:循环取json中数据

我这里有2部分才到列表里面是把

所以我要取列表中数据就要变为

dirt1['data']['detailList']

 循环:

使用一个循环就可以区分开来了

        for item in dirt1['data']['detailList']:
            print(item)

 

代码:

import requests
import json
from fake_useragent import UserAgent

def get_json():
    try:
        url = 'https://napi-huawei.tianyancha.com/next/web/home/vajialist?_=1688703382196'
        ua = UserAgent()
        headers = {
            'User-Agent': ua.chrome,
        }
        res = requests.get(url, headers=headers,timeout=10)
        dirt1 = json.loads(res.text)
        #print(dirt1['data'])
        for item in dirt1['data']['detailList']:
            print(item)

    except:
        return ""


if __name__ == '__main__':
    get_json()


三、目标3:提取每个数据中的某一项

目标

提取这2个指定项

 

理解:

此时item其实相当于dirt1['data']['detailList']中的一项

所以

item['resourceKey'] === ['data']['detailList']['resourceKey']

这行代码精确到数据中的更小一项resourceKey

运行结果:

 

完整代码:

import requests
import json
from fake_useragent import UserAgent

def get_json():
    try:
        url = 'https://napi-huawei.tianyancha.com/next/web/home/vajialist?_=1688703382196'
        ua = UserAgent()
        headers = {
            'User-Agent': ua.chrome,
        }
        res = requests.get(url, headers=headers,timeout=10)
        dirt1 = json.loads(res.text)
        #print(dirt1['data'])
        for item in dirt1['data']['detailList']:
            #print(item)
            print(item['resourceKey'])
            print(item['resourceName'])


    except:
        return ""


if __name__ == '__main__':
    get_json()



四、网络安全小圈子

README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge

评论 138
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值