爬虫识别-封装数据成 processedData|学习笔记

简介: 快速学习爬虫识别-封装数据成 processedData。

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第五阶段爬虫识别-封装数据成 processedData】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/673/detail/11689


爬虫识别-封装数据成 processedData

 

内容介绍:

一、目的

二、需求与设计

三、代码编写

 

一、目的

本章节要对数据进行封装,现在的数据都是用#CS#分开的数据,如果以后需要调用的时候再来一个一个进行拆分,就显得麻烦,所以再次统一进行拆分,然后封装,在调用对的点,去拿取数据,更为方便。 

即经过预处理以后的数据存储到 kafka 里面,是要进行分割的,后续计算的时候会用到各个数据,临时切分不太方便,为了方便后续使用,需要先在这里面先把它进行拆分,然后封装成 process date。

 

二、需求与设计

需求

从 kafka 中读取数据,用#CS#分割的字符,需要重新解封到对应的 process data 中,后期方便使用。

设计

1、拿到 kafkaValue 进行 mapPartitions,减少创建类的开销,这样速度会更快。

2、对 RDD 进行 map,循环数据

3、对一行数据用#CS#分割,取出所有的值封装到 ProcessedData 中,存在 bin 当中

4、返回数据

 

三、代码编写

具体代码如下:

//数据加载封装

//将 kafka 内的数据使用“#CS#”拆分,拆分后封装成 process data

val processedData =

QueryDataPackage.queryDataLoadAndPackage(kafkaValue)

将上述代码复制到开发工具中,将 kafka 数据拆封,分装成 process data。

在新建一个 scala 的 object,然后在进行打包,目的是实现数据切分。具体代码如下:

package com.air.antispider.stream.rulecompute.businessprocess

import com.air.antispider.stream.common.bean.

import com.air.antispider.stream.dataprocess.constants.TravelTypeEnum.TravelTypeEnum importcCm.air.antispider.stream.dataprocess.constants.BehaviorTypeEnum,FlightTypeEnum, TravelTypeEnum)

import com.fasterxml.jackson.databind.ObjectMapper

import com.fasterxml.jackson.module.scala.DefaultScalaModule

import org.apache.spark.streaming.dstream.DStream

//用于实现数据分割封装

object QueryDataPackage(

object QueryDataPackage(

//分割封装

def queryDataLoadAndPackage(kafkaValue:

DStream[String])=(//使用 mapPartitions 减少包装类的创建开销

kafkaValue.mapPartitions (partitionslterator=>

//创建 json 解析

val mapper = new ObjectMapper

mapper.registerModule(DefaultScalaModule)

//将数据进行 map,一条条处理

partitionslterator.map(sourceLine=>

//分割数据

val dataArray= sourceLine.split("#CS#", -1)

会发现有报错。因为里面有而很多的包没有引用,引入进来之后,就不报错了。传递过去的数据 values,里面是一个字符串,用#cs#进行拼接。

用#cs#进行 split 操作,拿到了一个个结果,到最后将结果进行封装,封装完后就返回。最后的结果就是封装后的process data,最后再经过一串代码进行处理之后,输出的结果就不是#cs#分割的,而是 process data。

运行程序的话,还需要用到爬虫预处理的数据,俩个都执行起来后,爬虫预处理运行结果如下:

 image.png

数据预处理是 process data 爬虫也是一样就代表将一条数据塞到方法里进行拆分,拆分完封装成 process data,返回能拿到,就是数据的封装,将原始“#CS#”一条数据封装成 processedData 就做完了。

//将 kafka 内的数据使用“#CS#”拆分,拆分后封装成 process data

val processedData =

QueryDataPackage.queryDataLoadAndPackage(kafkaValue)

processedData.foreachRDD(rdd=>rdd.foreach(println)

相关文章
|
7月前
|
数据采集 NoSQL 关系型数据库
Python爬虫去重策略:增量爬取与历史数据比对
Python爬虫去重策略:增量爬取与历史数据比对
|
5月前
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取
|
7月前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
380 4
|
7月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
8月前
|
Web App开发 数据采集 前端开发
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
|
8月前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
7月前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。
|
9月前
|
数据采集 JSON Java
Java爬虫获取微店快递费用item_fee API接口数据实现
本文介绍如何使用Java开发爬虫程序,通过微店API接口获取商品快递费用(item_fee)数据。主要内容包括:微店API接口的使用方法、Java爬虫技术背景、需求分析和技术选型。具体实现步骤为:发送HTTP请求获取数据、解析JSON格式的响应并提取快递费用信息,最后将结果存储到本地文件中。文中还提供了完整的代码示例,并提醒开发者注意授权令牌、接口频率限制及数据合法性等问题。
|
8月前
|
数据采集 存储 安全
Python爬虫实战:利用短效代理IP爬取京东母婴纸尿裤数据,多线程池并行处理方案详解
本文分享了一套结合青果网络短效代理IP和多线程池技术的电商数据爬取方案,针对京东母婴纸尿裤类目商品信息进行高效采集。通过动态代理IP规避访问限制,利用多线程提升抓取效率,同时确保数据采集的安全性和合法性。方案详细介绍了爬虫开发步骤、网页结构分析及代码实现,适用于大规模电商数据采集场景。