ScrapeKit 和 Swift 编写程序

以下是一个使用 ScrapeKit 和 Swift 编写的爬虫程序,用于爬取 图片。同时,我们使用了proxy 这段代码来获取代理。
import ScrapeKit
class PeopleImageCrawler: NSObject, ScrapeKit.Crawler {let url: URLlet proxyUrl: URL
init(url: URL, proxyUrl: URL) {self.url = urlself.proxyUrl = proxyUrl}
func crawl() -> [String: Any] {var images = [String]()let html = try? String(contentsOf: url, encoding: .utf8)let doc = try? HTML(html: html, encoding: .utf8)if let imgElems = doc?.css("img") {for imgElem in imgElems {if let imgUrl = imgElem.attr("data-src") {images.append(imgUrl)}}}return ["images": images]}
}
let targetUrl = URL(string: "https://www.people.com.cn")!
let proxyUrl = URL(string: "https://www.duoip.cn/get_proxy")!
let crawler = PeopleImageCrawler(url: targetUrl, proxyUrl: proxyUrl)
let result = crawler.crawl()
print(result)
这个程序首先导入 ScrapeKit 库,然后定义一个名为 PeopleImageCrawler 的类,继承自 ScrapeKit.Crawler。我们为其提供一个初始化方法,用于传入目标 URL 和代理 URL。在 crawl 方法中,我们使用 ScrapeKit 库解析 HTML 文档,并查找所有的 <img> 标签。如果找到,我们会将图片的 data-src 属性值添加到 images 数组中。最后,我们将 images 数组作为字典的一个键值对返回。
在主函数中,我们创建了一个 targetUrl 和一个 proxyUrl,然后实例化了一个 PeopleImageCrawler 类的对象。接着,我们调用 crawler.crawl() 方法来开始爬取,并将结果打印出来。
相关文章:
ScrapeKit 和 Swift 编写程序
以下是一个使用 ScrapeKit 和 Swift 编写的爬虫程序,用于爬取 图片。同时,我们使用了proxy 这段代码来获取代理。 import ScrapeKit class PeopleImageCrawler: NSObject, ScrapeKit.Crawler {let url: URLlet proxyUrl: URL init(url: URL, proxy…...
Java基础面试题知识点总结(上篇)
大家好,我是栗筝i,从 2022 年 10 月份开始,我持续梳理出了全面的 Java 技术栈内容,一方面是对自己学习内容进行整合梳理,另一方面是希望对大家有所帮助,使我们一同进步。得到了很多读者的正面反馈。 而在 2…...
STM32进行LVGL裸机移植
本文的移植参考的是正点原子的课程《手把手教你学LVGL图形界面编程》 基于该课程和《LVGL开发指南_V1.3》“第二章 LVGL 无操作系统移植”,然后结合自身的实际情况进行整理。 先根据自己的习惯,创建基础的单片机工程,然后在APP业务层和DRIVE…...
python解析robot framework的output.xml并生成html
一、用pyh模块解析stat结点数据(output.py) #codingutf-8import xml.dom.minidom import xml.etree.ElementTree#打开xml文档 dom xml.dom.minidom.parse(./ui/output.xml);root2 xml.etree.ElementTree.parse(./ui/output.xml) #得到文档元素对象 ro…...
【RuoYi移动端】uni-app中的单击和双击事件
1、单击事件: click"enterpriseSelect" 2、双击事件: touchend"userinfo"...
使用 conda 在 Ubuntu 16.04 上安装 Python 3.9 的步骤:和 VSCode配置
一、使用conda在 Ubuntu 16.04 上安装 Python 3.9 的步骤: 当然可以,conda 是一个非常强大的包管理器,它可以方便地管理不同版本的 Python 和各种库包。以下是使用 conda 在 Ubuntu 16.04 上安装 Python 3.9 的步骤: 1. 安装 Miniconda Miniconda 是 Anaconda 的轻量级版…...
spring6-国际化:i18n | 数据校验:Validation
文章目录 1、国际化:i18n1.1、i18n概述1.2、Java国际化1.3、Spring6国际化1.3.1、MessageSource接口1.3.2、使用Spring6国际化 2、数据校验:Validation2.1、Spring Validation概述2.2、实验一:通过Validator接口实现2.3、实验二:B…...
【MicroSoft Edge】格式化的显示JSON格式的数据
当我们没有进行任何操作的时候,默认浏览器给我们展示的JSON的数据是这样的: 看着十分不便。 解决方案: 首先点击 MicroSoft Edge 浏览器右上角的三点,如何选择扩展 点击 获取Microsoft Edge 扩展 搜索 JSONView,第一…...
【c++】跟webrtc学std array 2:TaskExecutorMap单例用法
D:\XTRANS\m98_rtc\ndrtc-webrtc\src\base\task\task_executor.ccstd array实现的map:TaskExecutorMap // Maps TaskTraits extension IDs to registered TaskExecutors. Index |n| // corresponds to id |n - 1|. using TaskExecutorMap =std::array<TaskExecutor*, Task…...
力扣每日一题59:螺旋矩阵||
题目描述: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入&am…...
codeforces (C++ In Love )
题目: 翻译: 思路: 1、在一个集合中有多组线段,如果有不相交的两组线段,则输出YES,否则输出NO。 2、每次操纵可以选择增加一组线段或者删除一组线段后,输出YES或者NO。 3、用flag标记该线段是否…...
【python】py文件全自动打包成spec文件
说明: 自动获取当前根目录下所有py文件生成spec文件,直接运行pyinstaller进行打包即可。直接打包成单执行文件。 直接上代码 import ospathex []def recursion(path, main):if path[:1] ! /:path /listpath os.listdir(path)for item in listpath:if…...
YOLOv5-调用官方权重进行检验(目标检测)
🍨 本文为[🔗365天深度学习训练营学习记录博客 🍦 参考文章:365天深度学习训练营-第7周:咖啡豆识别(训练营内部成员可读) 🍖 原作者:[K同学啊 | 接辅导、项目定制](https…...
springMVC中统一异常处理@ControllerAdvice
1.在DispatcherServlet中初始化HandlerExceptionResolver 2.controller执行完成后执行processDispatchResult(processedRequest,response,mappedHandler,mv,dispatchException),有异常则处理异常 3.ExcepitonHandlerExceptionResolver中执行方法doResolveHandlerMethodExceptio…...
【Java】<泛型>,在编译阶段约束操作的数据结构,并进行检查。
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ JAVA泛型 泛型介绍: ①泛型&#…...
解决谷歌学术bib信息不全的问题
在我们撰写学术论文时,经常需要引用参考文献。如果用latex撰写论文,势必会用到文献的bib信息,大部分的教程都会告诉我们去google scholar上去搜索。 一、问题描述 搜索一篇文章,然后选择cite,再选择bib。 很明显&…...
初始Redis 分布式结构的发展演变
目录 Redis的特点和使用场景 分布式系统的引入 单机系统 分布式系统 应用服务器的增多(处理更多的请求) 数据库读写分离(数据服务器的增多) 引入缓存 应对更大的数据量 业务拆分:微服务 Redis的特点和使用场景 我们先来…...
关于动态内存管理中的常见练习题
文章目录 前言练习1:练习2:练习3:练习4: 前言 学习完C语言中的动态内存管理,大家开始利用动态内存管理来去开辟空间,经过一顿狂敲代码后,发现了问题,程序要么崩掉,要么运…...
冒泡排序、插入排序、选择排序和快速排序的原理
下面是对冒泡排序、插入排序、选择排序和快速排序的原理的简要解释: 冒泡排序(Bubble Sort):冒泡排序是一种简单的排序算法。它通过多次迭代比较相邻的元素,并交换它们的位置,使得较大(或较小&…...
VB.NET之SqlCommand详解
目录 一.前言 二.SqlCommand的背景方法 1.构造函数 2.属性 3.方法 三.SqlCommand的使用实例 1.创建SqlCommand对象 2.执行SQL查询语句 3.执行存储过程 四.总结 一.前言 VB.NET的SqlCommand是ADO.NET的一部分,主要用于执行SQL语句并返回受影响的行数、查询…...
MCP服务深度解析—MySQL数据库操作实战指南
1. MCP协议与MySQL的完美结合 第一次听说MCP协议时,我正被各种数据库接口搞得焦头烂额。那感觉就像每次换手机都要重新买充电线一样烦人。MCP的出现彻底改变了这种局面,它就像数据库世界的"万能充电器",让MySQL操作变得前所未有的…...
终极指南:IntelliJ IDEA Markdown插件开发全解析
终极指南:IntelliJ IDEA Markdown插件开发全解析 【免费下载链接】idea-markdown Markdown language support for IntelliJ IDEA (abandonned). 项目地址: https://gitcode.com/gh_mirrors/id/idea-markdown 你是否在JetBrains系列IDE中寻找更优质的Markdown…...
2025最权威的六大AI写作网站横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有这样一种工具,它是基于自然语言处理以及学术知识图谱的智能写作辅助系统&#…...
A-59P语音模组:全能音频解决方案,一键解决降噪回音难题
在嵌入式音频、对讲通话、智能拾音产品开发中,噪音、回音、啸叫、接口不兼容一直是最头疼的问题。自己写算法难度大、周期长、效果差,而一款成熟可靠、即插即用的语音处理模组,能直接大幅降低开发门槛、提升产品竞争力。全面升级的高性能语音…...
AKShare金融数据接口库:新手必学的5个实战技巧与避坑指南
AKShare金融数据接口库:新手必学的5个实战技巧与避坑指南 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks…...
5分钟快速上手:MelonLoader Unity游戏模组加载器终极指南
5分钟快速上手:MelonLoader Unity游戏模组加载器终极指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否想为…...
Java 后端完整成长路线(含项目)
下面这份路线是我按真实公司后端成长路径给你设计的,不是培训班那种“技术名词堆砌版”,而是一步一步把你从“会写 Java”带到“能做后端项目”。我会分 阶段 目标 你该干什么 典型产出 来讲。一、你的专属起点定位(先对齐)✅ …...
85个CV模型变体!计算机视觉基础模型最全盘点
85个CV模型变体!计算机视觉基础模型最全盘点做CV的朋友都知道,标注数据太烧钱。研究员们为了不花钱也能训练模型,想出了各种办法:用无标签数据、用网上爬的图文配对、甚至用多模态数据,通过对比学习、掩码重建这些套路…...
别再让上电火花吓到你!手把手教你用分立器件搞定12V电源缓启动(附完整BOM清单)
12V电源缓启动电路实战指南:从原理到BOM的完整解决方案 每次插拔12V电源时那刺眼的火花和随之而来的系统复位,是否让你感到头疼?这背后隐藏的浪涌电流问题,不仅可能损坏精密元器件,还会缩短连接器寿命。本文将带你深入…...
genanki性能优化指南:如何高效处理大规模卡片生成
genanki性能优化指南:如何高效处理大规模卡片生成 【免费下载链接】genanki A Python 3 library for generating Anki decks 项目地址: https://gitcode.com/gh_mirrors/ge/genanki genanki是一款强大的Python 3库,专为生成Anki卡片而设计。当处理…...
