Python操作jsonファイル

この記事はコードレコードとしてのみ使用されます

#!/usr/bin/python
# -*- coding: UTF-8 -*-    
# Author: RuiMing Lin
# DateTime: 2021/01/25 14:50
# Description:
import requests
from pyquery import PyQuery as pq
import json

'''
r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb:以二进制只读方式打开一个文件。文件指针将会放在文件的开头。
r+:以读写方式打开一个文件。文件指针将会放在文件的开头。
rb+:以二进制读写方式打开一个文件。文件指针将会放在文件的开头。
w:以写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
wb:以二进制写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
w+:以读写方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
wb+:以二进制读写格式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
a:以追加方式打开一个文件。如果该文件已存在,文件指针将会放在文件结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,则创建新文件来写入。
ab:以二进制追加方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,则创建新文件来写入。
a+:以读写方式打开一个文件。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,则创建新文件来读写。
ab+:以二进制追加方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾。如果该文件不存在,则创建新文件用于读写。
'''


# 爬取页面的方法
def get_html(page):
    url = "https://nba.hupu.com/stats/players/pts/" + str(page)
    response = requests.get(url=url)
    if response.status_code == 200:
        return response.text
    else:
        return None


def scrape_html_1(i):
    html = get_html(i)
    doc = pq(html)
    trs = doc.find("table tr:not(:first-child)").items()
    for tr in trs:
        name = tr.find("td:nth-child(2)").text()
        team = tr.find("td:nth-child(3)").text()
        score = tr.find("td:nth-child(4)").text()
        rate = tr.find("td:nth-child(6)").text()
        yield {
    
    
            '名字': name,
            '队伍': team,
            '得分': score,
            '命中率': rate
        }


# 爬取完是一个迭代器,使用extend()会遍历迭代器加到results这个列表中
flag = False
# flag = True
if flag:
    results = []
    for i in range(3):
        results.extend(scrape_html_1(i + 1))
    print(len(results))

# 查看数据
flag = False
# flag = True
if flag:
    results = []
    for i in range(3):
        results.extend(scrape_html_1(i + 1))
    print(results[0].get("名字"))

# 将json持久化到本地
flag = False
# flag = True
if flag:
    results = []
    for i in range(3):
        results.extend(scrape_html_1(i + 1))
    json.dump(results, open('files/data.json', 'a+', encoding='utf-8'), ensure_ascii=False, indent=2)

# 读取本地json文件
flag = False
flag = True
if flag:
    with open('files/data.json', 'r', encoding='utf-8') as file:
        results = json.load(file)
    print(results)

おすすめ

転載: blog.csdn.net/Orange_minger/article/details/113475685