爬虫之数据解析----JSON

一.JSON是什么

JSON是一种轻量级的数据交换格式,他使人们更容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。

前端(JS,HTML,CSS)   →   JSON   →   后端(python)

后端(python)   →   JSON   →   前端(JS,HTML,CSS)

  • 我们学习爬虫主要是学习如何把JSON数据转换为python的格式,因为我们写python代码不会把数据返回前端页面

二.如何转换

1.导入JSON模块

import json     #json是内置工具

2.python转JSON

json.dumps()     python数据类型转json字符串
json.dump()      python数据类型转json文件

 注:

1.json数据key不能是元组只能是字符串
2.skipkeys=True异常数据过滤
3.ensure_ascii=False解决编码
# print(type(dict1))#<class 'dict'>
# json1=json.dumps(dict1)
# print(type(json1))#<class 'str'>json字符串
# print(type(str(json1)))#<class 'str'>不是json字符串
dict1[('2',1)]='元组'#添加一个元组类型的键值对
json2=json.dumps(dict1,skipkeys=True)#json数据key不能是元组只能是字符串,skipkeys=True异常数据过滤
print(json2)#{"a": 1, "b": 2}
dict1["c"]="元组"
json2=json.dumps(dict1,skipkeys=True)
print(json2)#{"a": 1, "b": 2, "c": "\u5143\u7ec4"}
json2=json.dumps(dict1,skipkeys=True,ensure_ascii=False)#ensure_ascii=False解决编码
print(json2)#{"a": 1, "b": 2, "c": "元组"}
with open('test.json','w',encoding='utf-8')as f:
    json.dump(dict1,f,skipkeys=True,ensure_ascii=False)

3.JSON转python 

json.loads()   #json字符串转python数据类型
json.load()    #json文件转python数据类型

with open('test.json','r',encoding='utf-8')as f:
    data=f.read()
    print(type(data))#<class 'str'>
    dict1=json.loads(data)
    print(dict1,type(dict1))#{'a': 1, 'b': 2, 'c': '元组'} <class 'dict'>

data1=json.load(f)
print(data1,type(data1))
  •  简记:只要是str类型有关的就加s,由str  →  python对象就是导入loads

三.实战 

import json
import requests
headers1={
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) ""AppleWebKit/537.36 (KHTML,likeGecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0"
}
response=requests.get(url="https://careers.tencent.com/tencentcareer/api/post/Query?timestamp"
                          "=1728065309345&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategory"
                   "Id=&attrId=1&keyword=&pageIndex=1&pageSize=10&language=zhcn&area=cn",headers=headers1)
#print(response.text)
result=json.loads(response.text)  # json转python
data_list=result["Data"]["Posts"]
for i in data_list:# 循环列表每一个数据
    #print(i)#每一条数据
    title=i['RecruitPostName']
    location=i['LocationName']
    Time=i['LastUpdateTime']
    print(title,location,Time)
    print("==================================")
#如果爬取出的数据是字符串类型且有\n和\n\r两种换行
Responsibility=i['Responsibility'].replace('\r','').replace('\n','')
#采取分布替换,用两个replace

爬虫技术,"2017-123"这样的数据格式通常表示一个日期范围,但这个范围看起来不完整,因为它缺少月份信息。如果您的意思是2017年1月至12月的数据,那么爬虫读取数据的过程可能会涉及到以下几个步骤: 1. **目标网站识别**:首先,确定要抓取数据的网站,可能是网页、API接口或数据库等。 2. **数据源分析**:分析网站的HTML结构(如果是网页)或API文档(如果是API),了解数据的存储位置和访问规则。 3. **选择合适的爬虫库**:对于Python,常见的爬虫库有BeautifulSoup、Scrapy或Requests配合HTML解析,或者使用像Selenium这样的工具模拟浏览器行为。 4. **编写爬虫代码**: - 对于静态网页,使用如BeautifulSoup等库定位数据所在的元素,并提取出日期数据(例如,通过查找包含"2017年"的`<span>`标签)。 - 对于动态加载的内容,可能需要考虑使用Selenium或Ajax模拟请求。 5. **日期筛选**:如果你确实是指2017年的每月数据,还需要编写逻辑来筛选出1月到12月的数据。 6. **数据存储**:将抓取的数据存储起来,可以选择CSV、JSON数据库等形式,具体取决于后续的数据处理和分析需求。 7. **异常处理和反爬策略**:确保爬虫能够处理可能出现的网络错误、服务器限制、反爬机制等问题。 8. **法律和道德问题**:在进行爬虫操作时,确保遵守目标网站的Robots协议,并尊重版权法,合法合规地获取和使用数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>