使用Swift模拟用户登录当网获取数据并保存到MySQL中

DALL·E 2023-10-11 15.17.57 - 插图显示一个蓝色调的世界地图,上面有许多金色的连接线,代表HTTP代理的全球连通性。在地图的中心是一个巨大的“16YUN”Logo,周围有云朵和闪电符号,强调产品的速度和稳定性。.png

前言

当当网作为中国最大的综合性网上商城之一,通过爬取当当网数据,我们可以获取商品信息、用户评价、销售数据等宝贵的信息资源。这些数据可以帮助企业了解市场趋势、分析竞争对手、优化产品定价等,从而做出更明智的决策。

为什么使用Swift

使用Swift进行用户模拟登录和数据获取有以下几个优势:

  1. 强大的网络编程支持:Swift提供了丰富的网络编程库,使得模拟用户登录和数据获取变得简单而简单。
  2. 安全性和稳定性:Swift具有内存安全性和错误处理能力,可以帮助我们编写更安全、稳定的代码,减少潜在的漏洞和错误。
  3. 丰富的数据解析库:Swift拥有多种数据解析库,如SwiftyJSON、Codable等,可以轻松解析从当当网络获取的数据。
  4. 与MySQL数据库的无缝集成:Swift提供了多个MySQL客户端库,如MySQL Connector,使得与MySQL数据库的交互变得简单而便捷。

如何进行模拟登录

模拟登录用户当网获取数据的第一步。以下是使用Swift进行模拟登录的基本步骤:

  1. 构建登录请求:使用Swift的URLSession和URLRequest构建登录请求,并设置请求的URL、HTTP方法和参数等。
  2. 发送登录请求:使用URLSession的dataTask方法发送登录请求,并处理登录响应。
  3. 处理登录响应:检查登录响应的状态码和内容,判断登录是否成功。如果登录成功,获取并保存登录后的会话信息,以便后续的数据获取。
// 构建登录请求
guard let url = URL(string: "https://example.com/login") else {print("无效的URL")return
}var request = URLRequest(url: url)
request.httpMethod = "POST"// 设置请求参数
let parameters = ["username": "your_username", "password": "your_password"]
request.httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: [])// 设置请求头
request.setValue("application/json", forHTTPHeaderField: "Content-Type")// 发送登录请求
let session = URLSession.shared
let task = session.dataTask(with: request) { (data, response, error) inif let error = error {print("登录请求失败:\(error.localizedDescription)")return}// 处理登录响应guard let httpResponse = response as? HTTPURLResponse else {print("无效的响应")return}if httpResponse.statusCode == 200 {// 登录成功,获取并保存登录后的会话信息if let cookies = HTTPCookieStorage.shared.cookies(for: url) {for cookie in cookies {// 保存会话信息,例如将cookie存储到UserDefaults中UserDefaults.standard.set(cookie.properties, forKey: "sessionCookie")}}print("登录成功")} else {// 登录失败print("登录失败:\(httpResponse.statusCode)")}
}task.resume()

如何获取数据

登录成功后,我们可以使用Swift的网络编程库来获取当网的数据。以下是获取数据的基本步骤:

  1. 构建数据请求:使用Swift的URLSession和URLRequest构建数据请求,并设置请求的URL、HTTP方法和参数等。
  2. 发送数据请求:使用URLSession的dataTask方法发送数据请求,并处理数据响应。
  3. 解析数据响应:使用Swift的数据解析库,如SwiftyJSON,解析从当网络获取的数据,并提取所需的信息。
// 构建数据请求
guard let url = URL(string: "https://example.com/data") else {print("无效的URL")return
}var request = URLRequest(url: url)
request.httpMethod = "GET"// 设置代理信息
let proxyHost = "www.16yun.cn"
let proxyPort = "5445"
let proxyUser = "16QMSOML"
let proxyPass = "280651"let proxyURL = URL(string: "http://\(proxyUser):\(proxyPass)@\(proxyHost):\(proxyPort)")
let configuration = URLSessionConfiguration.default
configuration.connectionProxyDictionary = [kCFNetworkProxiesHTTPProxy as AnyHashable: proxyURL]
let session = URLSession(configuration: configuration)// 发送数据请求
let task = session.dataTask(with: request) { (data, response, error) inif let error = error {print("数据请求失败:\(error.localizedDescription)")return}// 解析数据响应if let data = data {do {let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]// 使用SwiftyJSON解析数据let swiftyJSON = JSON(json)// 提取所需的信息let title = swiftyJSON["title"].stringValuelet author = swiftyJSON["author"].stringValuelet content = swiftyJSON["content"].stringValue// 打印提取的信息print("标题:\(title)")print("作者:\(author)")print("内容:\(content)")} catch {print("数据解析失败:\(error.localizedDescription)")}}
}task.resume()

如何保存到MySQL中

获取数据后,我们可以使用Swift的MySQL客户端将数据保存到MySQL数据库中。以下是保存数据到MySQL的基本步骤:

  1. 建立数据库连接:使用Swift的MySQL客户端库,如MySQL Connector,建立与MySQL数据库的连接。
  2. 构建插入语句:使用Swift的MySQL客户端库,构建插入语句,将获取的数据参数作为提交给插入语句。
  3. 执行插入操作:使用Swift的MySQL客户端库,执行插入操作,将数据保存到MySQL数据库中。
import MySQL// 建立数据库连接
let connection = MySQL.Connection(host: "localhost", user: "username", password: "password", database: "database")
do {try connection.open()print("数据库连接成功")
} catch {print("数据库连接失败:\(error)")
}// 构建插入语句
let title = "文章标题"
let author = "作者"
let content = "文章内容"let query = "INSERT INTO articles (title, author, content) VALUES ('\(title)', '\(author)', '\(content)')"// 执行插入操作
do {try connection.query(query)print("数据插入成功")
} catch {print("数据插入失败:\(error)")
}// 关闭数据库连接
connection.close()
print("数据库连接已关闭")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/174444.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D网页游戏外包开发引擎

3D网页开发引擎是用于创建具有三维图形、虚拟现实和交互性的网页应用程序的工具。以下是一些常用的3D网页开发引擎以及它们的主要特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Three.js&…

Mysql设置了更新时间自动更新,指定更新部分sql时不进行时间更新

现象&#xff1a; 因为字段设置了自动更新&#xff0c;所以sql语句一进行修改此字段就会自动更新时间&#xff0c;但是呢我们的有部分定时任务是半夜执行&#xff0c;并且不能让这个任务修改到数据的更新时间 解决&#xff1a; <update id"updateCreative">ALT…

mac安装nodejs,跑vue程序

1. 下载node.js for mac&#xff0c;地址&#xff1a;Node.js。一路安装就可以了&#xff0c;无需修改。 2. mac终端&#xff0c;查看node和npm的版本。 3. 配置环境变量&#xff0c; vim .bash_profile增加PATH$PATH:/usr/local/bin/ 4. 但是毕竟npm安装一些东西还是太慢了所…

【网安AIGC专题10.19】论文6:Java漏洞自动修复+数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会

How Effective Are Neural Networks for Fixing Security Vulnerabilities 写在最前面摘要贡献发现 介绍背景&#xff1a;漏洞修复需求和Java漏洞修复方向动机方法贡献 数据集先前的数据集和Java漏洞Benchmark数据集扩展要求数据处理工作最终数据集 VJBenchVJBench 与 Vul4J 的…

Git基础命令实践

文章目录 简介git的安装配置git的安装git的配置 git使用的基本流程创建版本库时光机穿梭版本回退工作区和暂存区管理修改撤销修改删除文件 远程仓库添加远程库从远程库克隆 总结 简介 本文主要记录了我在学习git操作的过程&#xff0c;以及如何使用GitHub。建议先参考廖雪峰的…

计算机网络_04_传输层

文章目录 1.什么是传输层2.传输层提供了什么服务3.传输层协议TCP 1.什么是传输层 传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看&#xff0c;“传输层”既是面向通信部分的最高层&#xff0c;与下面的三层一起共同构建进行网…

飞利浦双串口51单片机485网关

主要功能将PC端的数据接收下来&#xff0c;分发到不同的设备&#xff0c;也是轮询设备数据读取回来&#xff0c;打包回传到PC端&#xff0c;数据包包头包尾识别&#xff0c;数据校验&#xff0c;接收超时处理&#xff0c;将协议结构化处理&#xff0c;协议的改动不需要改动程序…

【数据结构】Map和Set

Map和Set 1. 搜索树 1.1 概念 二叉搜索树是左子树比根节点小&#xff0c;右子树比根节点大的二叉树。&#xff08;如果左右子树不为空的话是这样&#xff0c;但是左右子树也可以为空&#xff09; 1.2 操作——查找 查找的思想与二分查找类似。 如果根节点的值和所要查找的…

前端知识与基础应用

前端知识 什么是前端&#xff1a;所有和用户打交道的操作页面&#xff0c;我们都称之为前端 例如&#xff1a;pc页面&#xff0c;浏览器的主页面&#xff0c;手机页面等等&#xff0c;可以用肉眼看到的就是前端 什么是后端&#xff1a; 就是一堆代码&#xff0c;用户不能够直接…

Kitex踩坑 [Error] KITEX: processing request error,i/o timeout

报错问题 2023/010/28 17:20:10.250768 default_server_handler.go:234: [Error] KITEX: processing request error, remoteService, remoteAddr127.0.0.1:65425, errordefault codec read failed: read tcp 127.0.0.1:8888->127.0.0.1:65425: i/o timeout 分析原因 Hert…

内置视图联动查看器,实现数据关联分析

前言 在数据驱动业务发展的今天&#xff0c;数据的关联分析变得越来越重要。作为一种强大的数据挖掘工具&#xff0c;它可以帮助企业发现数据之间的关联和模式&#xff0c;从而更好地理解市场和客户的行为。通过关联分析&#xff0c;企业可以发现看似无关的数据之间的联系&…

假如我有一台服务器,我会让它提供三种服务

一、提供照片上传、存储和下载服务 随着移动互联网时代的持续快速发展&#xff0c;PC互联网日益势微&#xff0c;各大互联网门户网站的博客、空间也跟着凋零&#xff0c; 作为博客、空间的标配功能的相册也随之被关闭。 2019年3月6日网易相册发布停运公告并于当年5月8日正式停…

在线主动学习算法评估策略:prequential evaluation procedure

在线主动学习算法评估策略&#xff1a;prequential evaluation procedure 在在线主动学习领域(Online Active Learning)&#xff0c;对在线主动学习算法的评估策略有多种方法&#xff0c;而现如今常用的方法是prequential evaluation procedure(出自论文《High density-focuse…

SpringBoot 源码分析(四) 内置Tomcat分析

一、Tomcat相关知识 1. tomcat目录结构 Tomcat文件的目录结构 2.启动流程 启动一个Tomcat服务是执行的bin目录下的脚本程序&#xff0c;startup.bat和 startup.sh.一个是windows的脚本&#xff0c;一个是Linux下的脚本&#xff0c;同样还可以看到两个停止的脚本 shutdown.ba…

Java入门与实践

Java基础 Java入门 idea的使用 idea快捷键 crtlaltt 对选中的代码弹出环绕选项弹出层 问题描述&#xff1a;idea光标变小黑块 解决&#xff1a;误触Insert键&#xff0c;再次按Insert键即可 java基础语法 注释 //单行注释/* 多行注释 *//** 文档注释&#xff0c;可提取到…

车载网关产品解析(附:车载网关详细应用案例及部署流程)

5G车载网关是一款功能强大的工业级无线通讯设备。它集成了4G/5G双模网络模块、M12接口设计、强大的路由和安全功能等特性,可以为车载和移动应用提供稳定可靠的无线数据连接。 链接直达&#xff1a;https://www.key-iot.com/iotlist/sv900.html ### 产品特性 5G车载网关最大的…

【多线程】线程互斥 {多执行流并发执行的数据竞争问题,互斥锁的基本用法,pthread_mutex系列函数,互斥锁的原理;死锁;可重入函数和线程安全}

一、进程线程间通信的相关概念 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源。确切的说&#xff0c;临界资源在同一时刻只能被一个执行流访问。临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区。互斥&#xff1a;通过互…

计算机网络基础三

课程目标 理解路由表的作用 能够读懂路由表信息 能够使用图形抓包工具 wireshark 进行数据包的抓取 &#xff0c;如&#xff08; TCP/IP 的三次握手四次断开&#xff09; 一、路由表 思考&#xff1a; 什么是交换,什么是路由,什么是路由表&#xff1f;1. 交换是指同网络访…

Linux C语言开发-D15一维数组

数组&#xff1a;有一定顺序关系的数据类型相同变量的变量集合 形式&#xff1a;<存储类型> <数据类型> <数组名> [<表达式>] 数组名表示内存首地址&#xff0c;是一个地址常量&#xff0c;sizeof(数组名)是数组占用的总内存空间 编译时分配连续内存…

常见的22个软件测试面试题(含答案解析)

大家好&#xff0c;我是大圣。今天大圣给大家列举了API测试的22个面试题&#xff0c;快来看看吧。 1、什么是API? API是允许两个应用程序相互通信的代码。API使开发人员能够发出特定的调用或请求来发送或接收信息。 2、什么是以API为中心的应用程序? 以API为中心的应用程…