python爬虫之json数据解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: python爬虫之json数据解析

日常爬虫过程中我们对于爬取到的网页数据需要进行解析,因为大多数数据是不需要的,所以我们需要进行数据解析,常用的数据解析方式有正则表达式,xpath,bs4。今天我们重点来了解一下什么是json。欢迎收藏学习,喜欢点赞支持。
json(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。json模块提供了四个功能:dumps、dump、loads、load,用于字符串 和 python数据类型间进行转换。
在日常执行爬虫项目的过程中,有时返回的不是一个html页面而是json格式数据,此时对数据的解析非常重要比,比如以下2种方式:
1.Json格式数据的爬取,采用request对以上的url进行爬取,在爬取的过程中,考虑到需要模拟真实的用户,因此需要添加cookie或者header参数。
```import requests

content=requests.get(url,headers=headers).content

2.对爬取的json格式数据的解析,数据已经爬取下来,存放在contend里面,接下来就是对数据的处理,这种可以在 www.bejson.com,对于这个数据的解析可以采用采用正则表达式解析,使用正则提取title字段、 
```import re

project = re.findall(r'"title":(.*?),', content)

实际项目案例测试,我们以爬取淘票票官网最近比较火的电影为例使用Java和爬虫代理IP,通过Jackson库解析stream流式JSON数据的示例代码,实现代码有亿牛云提供、
```import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.io.InputStream;

public class StreamJsonParserExample {

public static void main(String[] args) throws IOException {
    // 亿牛云(动态转发隧道代理) 爬虫代理加强版  代理服务器和端口
    HttpHost proxy = new HttpHost("www.16yun.cn", 8080);
    CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    // 亿牛云(动态转发隧道代理) 爬虫代理加强版 用户名和密码
    credentialsProvider.setCredentials(
            new AuthScope(proxy.getHostName(), proxy.getPort()),
            new UsernamePasswordCredentials("16YUN", "16IP"));

    // 创建HTTP客户端
    CloseableHttpClient httpClient = HttpClientBuilder.create()
            .setProxy(proxy)
            .setDefaultCredentialsProvider(credentialsProvider)
            .build();

    // 创建HTTP请求
    HttpGet httpGet = new HttpGet("http://example.com/stream.json");

    // 执行HTTP请求
    CloseableHttpResponse response = httpClient.execute(httpGet, HttpClientContext.create());

    // 获取HTTP响应的输入流
    InputStream inputStream = response.getEntity().getContent();

    // 创建Jackson解析器
    JsonFactory jsonFactory = new JsonFactory();
    JsonParser jsonParser = jsonFactory.createParser(inputStream);
    ObjectMapper objectMapper = new ObjectMapper();

    // 逐个解析JSON对象
    while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
        if (jsonParser.currentToken() == JsonToken.FIELD_NAME && "name".equals(jsonParser.getCurrentName())) {
            jsonParser.nextToken();
            String name = objectMapper.readValue(jsonParser, String.class);
            System.out.println("Name: " + name);
        }
        // 解析其他字段
    }

    // 关闭HTTP响应和输入流
    EntityUtils.consume(response.getEntity());
    inputStream.close();
}

}

```

相关文章
|
13天前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
128 83
|
1天前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
13天前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
166 9
|
6天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
13天前
|
数据采集 存储 前端开发
用Python抓取亚马逊动态加载数据,一文读懂
用Python抓取亚马逊动态加载数据,一文读懂
|
14天前
|
数据采集 存储 数据挖掘
深入剖析 Python 爬虫:淘宝商品详情数据抓取
深入剖析 Python 爬虫:淘宝商品详情数据抓取
|
5天前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
4月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
141 2
|
5天前
|
机器学习/深度学习 自然语言处理 算法
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
|
3月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

热门文章

最新文章