相关文章推荐
活泼的柚子  ·  Python Dataframe ...·  1 年前    · 
冷静的豌豆  ·  C# ...·  1 年前    · 

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号 , 分隔
  • 使用斜杆 \ 来转义字符
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象

JSON 的两种结构:

1、对象:大括号 {} 保存的对象是一个无序的名称/值对集合。一个对象以左括号 { 开始, 右括号 } 结束。每个"键"后跟一个冒号 :,名称/值对使用逗号 , 分隔。
2、数组:中括号 [] 保存的数组是值(value)的有序集合。一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔。

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在中括号中)
  • 对象(在大括号中)
  • null

JOSN示例:
在这里插入图片描述

# -*- coding: utf-8 -*-
import os
import json
import pandas as pd
from bs4 import BeautifulSoup
import requests
def get_data(url):
    f = requests.get(url)
    soup = BeautifulSoup(f.content, "lxml")
    str_json = str(soup.body).strip('</p></body>')
    data_json = json.loads(str_json)
    data_new = pd.DataFrame()
    for i in range(len(data_json)):
        data_new.loc[i, 'name'] = data_json[i].get('name', '')
        data_new.loc[i, 'url'] = data_json[i].get('url', '')
        print('we are done : ', i)
    print('result: \n', data_new)
    return data_new
if __name__ == '__main__':
    get_data('www.xxx.com')

结果展示:
在这里插入图片描述

我尝试使用Python从Web上获取JSON文件。如果我在浏览器(Mozilla或Chromium)打开URL,我会看到JSON。但是当我对Python执行以下操作时:response = urllib2.urlopen(url)data = json.loads(response.read())我收到一条错误消息,它告诉我以下信息(翻译成英语后):Errno 10060,连接槽出现错误,因为服... 下面就是在编辑器的样子,获得response对象后即可根据业务需求进行相关的处理。该网站可快速帮我们生成请求代码,包括get请求、post请求等。在这里我们需要用到一个网站。在这里我们了解两个函数。 替换「元祖」的元素,需要先转成列表,再循环替换,替换完成再转回元组,这种方式同样会改变内存地址。或者使用「循环」的方式替换列表的元素,这种方式不会生成新数组,替换前、后的内存地址是一样的。字符串的转义符不会打印出来,但 replace() 可以替换这些转义符,比如替换换行符。从结果可以看到,替换前会换行,替换后不会换行,因为转义符被替换掉了。替换次数为「正数」时,按照从左到右的顺序替换,设置几次就替换几次。替换次数为「负数」时,无论负几,都会替换所有匹配到的内容。替换「字典」的,直接循环替换。 我们知道在爬虫的过程我们对于爬取到的网页数据需要进行解析,因为大多数数据是不需要的,所以我们需要进行数据解析,常用的数据解析方式有正则表达式,xpath,bs4。 这次我们来介绍一下另一个数据解析库–jsonpath,在此之前我们需要先了解一下什么是json。欢迎收藏学习,喜欢点赞支持。 一、初识Json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后 在上述代码,我们向’http://www.example.com/login’发送了一个POST请求,并将用户名和密码作为参数传递。通过调用urlopen()方法发送请求,服务器将返回响应,我们通过调用read()方法获取响应的内容。在上述代码,我们向’http://www.example.com/'发送了一个GET请求,并将响应保存到了变量response。在上述代码,我们创建了一个DELETE请求,并将其发送到’http://www.example.com/'。 任务背景:调用API接口数据,抽取我们所需类型的数据,并写入指定mysql数据库。先从宏观上看这个任务,并对任务进行分解:step1:需要学习python下的通过url读取数据的方式;step2:数据解析,也是核心部分,数据格式从python角度去理解,是字典?列表?还是各种嵌套?step3:连接mysql数据库,将数据写入。从功能上看,该数据获取程序可以分为3个方法,即step1对应方法requ... url = 'http://192.168.8.24:8161/11/12.htm' _url = urlparse(url) hostname = _url.hostname port = _url.port url_port = _url.netloc url_path = _url.path url_protocol = _url.scheme print(f'域名:{hostname}\n端口:{port}\n headers={ "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Mobile Safari/537.36" #url地址 url="https://movie.douban.com/j/search_su... 爬取网页数据用正则表达式的话,可以直接从网页源代码文本匹配,但出错率较高,且熟悉正则表达式的使用也比较难,需要经常翻阅文档。实际爬取数据大多基于 HTML 结构的 Web 页面,网页节点较多,各种层级关系。可以考虑使用 Xpath 解析器、BeautifulSoup解析器、PyQuery CSS解析器抽取结构化数据,使用正则表达式抽取非结构化数据。Xpath:可在 XML 查找信息;支持 HTML 的查找;通过元素和属性进行导航,查找效率很高。 def test(): s=parse.unquote("%7B%22group%22%3A%22code%3ACS%20534%22%2C%22key%22%3A%22crn%3A14786%22%2C%22srcdb%22%3A%22202101%22%2C%22matched%22%3A%22crn%3A14786%22%7D") b = json.loads(s) print(s) prin.