[ネットワーク セキュリティで爬虫類を練習する - 100 の演習] 演習 8: json データの最小限の項目抽出

目次

1. 目標 1: 指定された json 内のデータをクロールする

2. 目標 2: json からデータをフェッチするループ

3. 目標 3: 各データから項目を抽出する

4. ネットワークセキュリティの小さなサークル


1. 目標 1: 指定された json 内のデータをクロールする

データ内のデータをクロールする

 


コアコード:

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

(1) json.loads() メソッドを使用して、有効な JSON 文字列を解析し、Python 辞書に変換できます。

(2)dirt1['data']はjsonのデータ部分を出力します


操作結果:

クロールを終えた

 


コード:

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. 目標 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. 目標 3: 各データから項目を抽出する

目標

指定されたこれら 2 つの項目を抽出します

 

理解:

この時点で、項目は実際には、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()



4. ネットワークセキュリティの小さなサークル

README.md 書籍 Bansheng/ネットワーク セキュリティ ナレッジ システム-プラクティス センター-コード クラウド-オープン ソース 中国 (gitee.com) https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

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

おすすめ

転載: blog.csdn.net/qq_53079406/article/details/131594821