当前位置: 首页 > news >正文

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 编写的爬虫程序&#xff0c;用于爬取 图片。同时&#xff0c;我们使用了proxy 这段代码来获取代理。 import ScrapeKit ​ class PeopleImageCrawler: NSObject, ScrapeKit.Crawler {let url: URLlet proxyUrl: URL ​init(url: URL, proxy…...

Java基础面试题知识点总结(上篇)

大家好&#xff0c;我是栗筝i&#xff0c;从 2022 年 10 月份开始&#xff0c;我持续梳理出了全面的 Java 技术栈内容&#xff0c;一方面是对自己学习内容进行整合梳理&#xff0c;另一方面是希望对大家有所帮助&#xff0c;使我们一同进步。得到了很多读者的正面反馈。 而在 2…...

STM32进行LVGL裸机移植

本文的移植参考的是正点原子的课程《手把手教你学LVGL图形界面编程》 基于该课程和《LVGL开发指南_V1.3》“第二章 LVGL 无操作系统移植”&#xff0c;然后结合自身的实际情况进行整理。 先根据自己的习惯&#xff0c;创建基础的单片机工程&#xff0c;然后在APP业务层和DRIVE…...

python解析robot framework的output.xml并生成html

一、用pyh模块解析stat结点数据&#xff08;output.py&#xff09; #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、单击事件&#xff1a; click"enterpriseSelect" 2、双击事件&#xff1a; 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、国际化&#xff1a;i18n1.1、i18n概述1.2、Java国际化1.3、Spring6国际化1.3.1、MessageSource接口1.3.2、使用Spring6国际化 2、数据校验&#xff1a;Validation2.1、Spring Validation概述2.2、实验一&#xff1a;通过Validator接口实现2.3、实验二&#xff1a;B…...

【MicroSoft Edge】格式化的显示JSON格式的数据

当我们没有进行任何操作的时候&#xff0c;默认浏览器给我们展示的JSON的数据是这样的&#xff1a; 看着十分不便。 解决方案&#xff1a; 首先点击 MicroSoft Edge 浏览器右上角的三点&#xff0c;如何选择扩展 点击 获取Microsoft Edge 扩展 搜索 JSONView&#xff0c;第一…...

【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:螺旋矩阵||

题目描述&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&am…...

codeforces (C++ In Love )

题目&#xff1a; 翻译&#xff1a; 思路&#xff1a; 1、在一个集合中有多组线段&#xff0c;如果有不相交的两组线段&#xff0c;则输出YES&#xff0c;否则输出NO。 2、每次操纵可以选择增加一组线段或者删除一组线段后&#xff0c;输出YES或者NO。 3、用flag标记该线段是否…...

【python】py文件全自动打包成spec文件

说明&#xff1a; 自动获取当前根目录下所有py文件生成spec文件&#xff0c;直接运行pyinstaller进行打包即可。直接打包成单执行文件。 直接上代码 import ospathex []def recursion(path, main):if path[:1] ! /:path /listpath os.listdir(path)for item in listpath:if…...

YOLOv5-调用官方权重进行检验(目标检测)

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营-第7周&#xff1a;咖啡豆识别&#xff08;训练营内部成员可读&#xff09; &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https…...

springMVC中统一异常处理@ControllerAdvice

1.在DispatcherServlet中初始化HandlerExceptionResolver 2.controller执行完成后执行processDispatchResult(processedRequest,response,mappedHandler,mv,dispatchException),有异常则处理异常 3.ExcepitonHandlerExceptionResolver中执行方法doResolveHandlerMethodExceptio…...

【Java】<泛型>,在编译阶段约束操作的数据结构,并进行检查。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ JAVA泛型 泛型介绍&#xff1a; ①泛型&#…...

解决谷歌学术bib信息不全的问题

在我们撰写学术论文时&#xff0c;经常需要引用参考文献。如果用latex撰写论文&#xff0c;势必会用到文献的bib信息&#xff0c;大部分的教程都会告诉我们去google scholar上去搜索。 一、问题描述 搜索一篇文章&#xff0c;然后选择cite&#xff0c;再选择bib。 很明显&…...

初始Redis 分布式结构的发展演变

目录 Redis的特点和使用场景 分布式系统的引入 单机系统 分布式系统 应用服务器的增多&#xff08;处理更多的请求&#xff09; 数据库读写分离&#xff08;数据服务器的增多) 引入缓存 应对更大的数据量 业务拆分&#xff1a;微服务 Redis的特点和使用场景 我们先来…...

关于动态内存管理中的常见练习题

文章目录 前言练习1&#xff1a;练习2&#xff1a;练习3&#xff1a;练习4&#xff1a; 前言 学习完C语言中的动态内存管理&#xff0c;大家开始利用动态内存管理来去开辟空间&#xff0c;经过一顿狂敲代码后&#xff0c;发现了问题&#xff0c;程序要么崩掉&#xff0c;要么运…...

冒泡排序、插入排序、选择排序和快速排序的原理

下面是对冒泡排序、插入排序、选择排序和快速排序的原理的简要解释&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;冒泡排序是一种简单的排序算法。它通过多次迭代比较相邻的元素&#xff0c;并交换它们的位置&#xff0c;使得较大&#xff08;或较小&…...

VB.NET之SqlCommand详解

目录 一.前言 二.SqlCommand的背景方法 1.构造函数 2.属性 3.方法 三.SqlCommand的使用实例 1.创建SqlCommand对象 2.执行SQL查询语句 3.执行存储过程 四.总结 一.前言 VB.NET的SqlCommand是ADO.NET的一部分&#xff0c;主要用于执行SQL语句并返回受影响的行数、查询…...

MCP服务深度解析—MySQL数据库操作实战指南

1. MCP协议与MySQL的完美结合 第一次听说MCP协议时&#xff0c;我正被各种数据库接口搞得焦头烂额。那感觉就像每次换手机都要重新买充电线一样烦人。MCP的出现彻底改变了这种局面&#xff0c;它就像数据库世界的"万能充电器"&#xff0c;让MySQL操作变得前所未有的…...

终极指南:IntelliJ IDEA Markdown插件开发全解析

终极指南&#xff1a;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论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有这样一种工具&#xff0c;它是基于自然语言处理以及学术知识图谱的智能写作辅助系统&#…...

A-59P语音模组:全能音频解决方案,一键解决降噪回音难题

在嵌入式音频、对讲通话、智能拾音产品开发中&#xff0c;噪音、回音、啸叫、接口不兼容一直是最头疼的问题。自己写算法难度大、周期长、效果差&#xff0c;而一款成熟可靠、即插即用的语音处理模组&#xff0c;能直接大幅降低开发门槛、提升产品竞争力。全面升级的高性能语音…...

AKShare金融数据接口库:新手必学的5个实战技巧与避坑指南

AKShare金融数据接口库&#xff1a;新手必学的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分钟快速上手&#xff1a;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 后端完整成长路线(含项目)

下面这份路线是我按真实公司后端成长路径给你设计的&#xff0c;不是培训班那种“技术名词堆砌版”&#xff0c;而是一步一步把你从“会写 Java”带到“能做后端项目”。我会分 阶段 目标 你该干什么 典型产出 来讲。一、你的专属起点定位&#xff08;先对齐&#xff09;✅ …...

85个CV模型变体!计算机视觉基础模型最全盘点

85个CV模型变体&#xff01;计算机视觉基础模型最全盘点做CV的朋友都知道&#xff0c;标注数据太烧钱。研究员们为了不花钱也能训练模型&#xff0c;想出了各种办法&#xff1a;用无标签数据、用网上爬的图文配对、甚至用多模态数据&#xff0c;通过对比学习、掩码重建这些套路…...

别再让上电火花吓到你!手把手教你用分立器件搞定12V电源缓启动(附完整BOM清单)

12V电源缓启动电路实战指南&#xff1a;从原理到BOM的完整解决方案 每次插拔12V电源时那刺眼的火花和随之而来的系统复位&#xff0c;是否让你感到头疼&#xff1f;这背后隐藏的浪涌电流问题&#xff0c;不仅可能损坏精密元器件&#xff0c;还会缩短连接器寿命。本文将带你深入…...

genanki性能优化指南:如何高效处理大规模卡片生成

genanki性能优化指南&#xff1a;如何高效处理大规模卡片生成 【免费下载链接】genanki A Python 3 library for generating Anki decks 项目地址: https://gitcode.com/gh_mirrors/ge/genanki genanki是一款强大的Python 3库&#xff0c;专为生成Anki卡片而设计。当处理…...