Python抓取网页数据 生成 iOS plist 文件

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
闲来无事,看看了Python,发现这东西挺爽的,废话少说,就是干
  • 准备搭建环境
    • 因为是MAC电脑,所以自动安装了Python 2.7的版本
    • 添加一个 库 Beautiful Soup ,方法这里说两种
      • 1.在终端输入 pip install BeautifulSoup
      • 2.手动下载包后,终端切换到 解压的文件夹,输入 sudo python setup.py install 下载地址BeautifulSoup
  • 开始写代码吧
    • 先找一个想要抓取东西的网站,这里我就随便找一个吧 地址是:http://movie.douban.com/chart
    • 好了在终端输入 vim 我知道这个东西,对于新手来说,就是一个挑战,这里我也建议使用轻量的Sublime
    • 代码如下 (注意python是严格的缩进,以下代码要顶格写)
#-*- coding:utf-8 -*-
import urllib2
import urllib
html=urllib2.urlopen("http://movie.douban.com/chart").read()
print html
  • 输出的结果就是一个HTML的网页,这里我就看到自己想要抓取的图片和图片名的文字片段
<a class="nbg" href="http://movie.douban.com/subject/24879839/"  title="道士下山">
           <img src="http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251450614.jpg" alt="道士下山" class=""/>
</a>
  • 分析我们想要的,一个是图片的名称,一个是图片的链接地址,直接上Python代码
#-*- coding:utf-8 -*-
import urllib2
from bs4 import BeautifulSoup

import sys  
reload(sys)  
sys.setdefaultencoding('utf8')

# 函数
def  printPlistCode():
    #1.得到这个网页的 html 代码 #
    html = urllib2.urlopen("http://movie.douban.com/chart").read()

    #2.转换 一种格式,方便查找
    soup = BeautifulSoup(html)
    #3.  得到 找到的所有 包含 a 属性是class = nbg 的代码块,数组
    liResutl = soup.findAll('a', attrs = {"class" : "nbg"})
    #4.用于拼接每个字典的字符串
    tmpDictM = ''

    #5. 遍历这个代码块  数组
    for li in liResutl:

        #5.1 找到 img 标签的代码块 数组
        imageEntityArray = li.findAll('img')

        #5.2 得到每个image 标签
        for image in imageEntityArray:
            #5.3 得到src 这个属性的 value  后面也一样 类似 key value
            link = image.get('src')
            imageName = image.get('alt')
            #拼接 由于 py中 {} 是一种数据处理格式,类似占位符
            tmpDict = '''@{0}@\"name\" : @\"{1}\", @\"imageUrl\" : @\"{2}\"{3},'''

            tmpDict =  tmpDict.format('{',imageName,link,'}')

            tmpDictM = tmpDictM + tmpDict

    #6.去掉最后一个 , 
    tmpDictM = tmpDictM[0:len(tmpDictM) - 1].decode('utf8')

    #7 拼接全部
    restultStr = '@[{0}];'.format(tmpDictM)

    print restultStr


if __name__ == '__main__':
    printPlistCode()
  • 输出结果就是Objective-C的 数组
@[@{@"name" : @"进击的巨人真人版:前篇", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251690571.jpg"},@{@"name" : @"花与爱丽丝杀人事件", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2222398443.jpg"},@{@"name" : @"小黄人大眼萌", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2258235689.jpg"},@{@"name" : @"小森林 冬春篇", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2215147728.jpg"},@{@"name" : @"道士下山", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251450614.jpg"},@{@"name" : @"深夜食堂 电影版", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2205014862.jpg"},@{@"name" : @"小男孩", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2230105606.jpg"},@{@"name" : @"头脑特工队", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2231021196.jpg"},@{@"name" : @"百元之恋", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2205471169.jpg"},@{@"name" : @"杀破狼2", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2246885606.jpg"}];
  • 使用Xcode 写到Plist中去
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {


    NSArray *plistArray = @[@{@"name" : @"进击的巨人真人版:前篇", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251690571.jpg"},@{@"name" : @"花与爱丽丝杀人事件", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2222398443.jpg"},@{@"name" : @"小黄人大眼萌", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2258235689.jpg"},@{@"name" : @"小森林 冬春篇", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2215147728.jpg"},@{@"name" : @"道士下山", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251450614.jpg"},@{@"name" : @"深夜食堂 电影版", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2205014862.jpg"},@{@"name" : @"小男孩", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2230105606.jpg"},@{@"name" : @"头脑特工队", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2231021196.jpg"},@{@"name" : @"百元之恋", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2205471169.jpg"},@{@"name" : @"杀破狼2", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2246885606.jpg"}];
    //路径可以自己选择
    [plistArray writeToFile:@"/Users/xxx/Desktop/test/movie.plist" atomically:YES];

    return 0;
}
  • 到这里,就可以看到plist 文件可以用于测试了
    这里写图片描述
  • 如果想要复制粘贴这里面的代码,那就选择Sublime编辑器
  • (欢迎转帖,请附上源地址boyXiong)
iOS安全研究:从侦察到漏洞利用的攻防实战指南 在移动安全领域,理解系统安全机制与攻击面是构建有效防御的基础。iOS以其封闭的沙箱环境和严格的安全模型著称,其安全架构通过代码签名、沙箱隔离和权限控制等多层机制保护系统与用户数据。从技术原理上看,安全研究遵循“以攻促防”的核心方法论,即通过模拟攻击者的侦察与漏洞利用技术,逆向剖析系统弱点,从而设计出更坚固的防护体系。这在工程实践上体现为对静态信息收集、动态运行时分析、网络流量监控以及内存破坏、逻辑漏洞等常见攻击向量的系统性探索。例如,通过中间人攻击(MitM)技术分析应用网络行为,或利用Frida等工具进行 阅读详情

相关推荐

微信本地数据库解密技术解析:从SQLCipher加密到WechatDecrypt工具实战

SQLCipher作为SQLite数据库的加密扩展,采用256位AES-CBC算法对静态数据进行高强度保护,其核心在于密钥的动态生成机制。在移动应用数据安全领域,这种加密方式确保了用户本地数据的机密性,但同时也催生了在合法合规前提下进行数据恢复与解析的技术需求。通过逆向工程分析客户端的数据存储逻辑,可以理解密钥如何与设备标识(如IMEI)及用户身份(UIN)绑定生成。WechatDecrypt这类工具链正是基于此原理,实现了对加密数据库的提取、密钥计算与解密操作,为开发者研究本地数据存储结构、进行数据备份或

congdi7904的博客 344

Mac——利用Python进行网页爬取

Mac——利用Python进行网页爬取 目标:利用Python爬取网页中的指定内容,例如,爬取百度百科上面的四川省的别名。 输出:四川省的别名为:川、蜀、天府之国 个人经验,网页爬取主要掌握2个核心点: 网页爬虫的原理 正则表达式的灵活应用 接下来,拆分一下步骤: 1、打开待...

GeekZW的博客 4420

懒人编程:用最小代码解决高频生活痛点

自动化不是追求技术炫技,而是应对日常熵增、降低秩序维护成本的基础能力。其核心原理在于识别‘高频微痛’场景——单次操作耗时短但重复率高,通过轻量级脚本(如Python、Bash、iOS快捷指令)实现低维护、高确定性的即时反馈。技术价值体现在可丢弃性设计(如SQLite单文件数据库、CLI优先交互)、人类行为模拟(网页自动化中的贝塞尔鼠标轨迹、断点续传)和跨平台中间格式(Markdown+YAML元数据)。典型应用场景包括家庭健康监测、微信作业汇总、智能文件归档与采购清单管理。本文聚焦生活自动化落地方法论,融合

clugcpne10995的博客 498

短信服务开通详细教程(小白必看)

当今网站,为了防止,机器人非法注册,出现了,图片验证码, 短信验证码,。。。 今天就来讲一下,短信验证码的流程 这里以 阿里云为例,很多网站,都提供短信服务,API, 只需要SDK, 就可使用,开通服务即可, 短信验证码 一, 注册并实名制 1.1 创建一个阿里云账号,点击这里 1.2 实名认证:点击这里 1.3 绑定企业支付宝:点击绑定企业支付宝 二,开通短信服务 2.1 子账户(使用) 点击看子账号页面 2.2 进入控制台: 点击查看控制台 进行购买短信包 这里我们用python 为例, c

k8vg___的博客 3091

安装zookeper集群

Zookpeeper 分布式协调服务,用于管理大型主机。 kafka与zookeeper集群安装 https://www.cnblogs.com/mkxfs/p/12030331.html https://www.w3cschool.cn/zookeeper/ 教程 https://www.bilibili.com/video/BV19b411772h?p=4 教程 全局一致性 安装jdk 查看java版本 @[root@localhost ~]]java -version 安装zookpeeper安

qq_40582275的博客 332

iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据

网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一片文章已经介绍我们可以使用两个方式来抓取网络数据实现网络爬虫,并且大致介绍了一下怎么使用正则表达式去实现数据抓取 由于笔者曾经学过一段时间java和and...

weixin_30491641的博客 182

01 UITableView_自定义cell_01获取plist数据

UITableView_自定义cell 学习到UITableView,并且自定义cell,做个小实例,然我们先获取plist 首先,从一个网站用python加载想要点数据,然后加载成plist文件导入xcode; 准备搭建环境 mac电脑所以电脑自动安装了python2.7 添加库Beautiful Soup,添加方法 在mac电脑终端安装pip 在网上下载get-pip.py 在终端输入 ...

weixin_30781631的博客 111

iOS IPA脱壳与Info.plist解析:Mach-O加密与权限审计

移动应用安全分析通常从理解安装包格式开始:IPA 本质是 ZIP 归档,解包后的 Payload 中包含 Mach-O 可执行文件、Info.plist 与代码签名资源,它们共同决定应用如何被校验、加载和运行。商店分发的 Mach-O 可能带有加密标记,磁盘上并非明文,需要在运行时从内存导出解密镜像,也就是常说的脱壳;而 Info.plist 以 XML 或二进制 plist 保存 Bundle ID、版本、权限、后台模式与 URL Scheme 等声明,是包体信息提取和合规审计的高频入口。掌握 crypt

weixin_30582943的博客 216

基于AI与本地知识库的游戏动态攻略生成系统设计与实现

在游戏开发与玩家支持领域,如何高效、精准地提供游戏指引是一个经典挑战。传统静态攻略存在更新滞后、形式单一的问题。其核心解决思路在于将结构化的游戏数据与智能化的内容生成相结合。从技术原理上看,这通常涉及实时数据感知、信息检索与自然语言生成等多个环节。其技术价值在于能够实现内容的实时化、个性化与自动化生产,显著提升玩家体验与社区运营效率。典型的应用场景包括游戏内的实时任务指引、复杂谜题提示以及战斗策略推荐等。本文聚焦于利用ChatGPT等大语言模型与本地向量数据库技术,构建一个混合智能系统。该系统通过游戏API

weixin_30570101的博客 363

AI Agent网络信息获取与Xcode集成Gemini实战指南

AI Agent(智能体)作为具备自主感知、规划与执行能力的AI系统,其核心原理在于结合大模型的认知能力与外部工具的调用功能,从而突破传统对话模型的局限。这一技术架构的价值在于将AI从信息顾问升级为任务执行者,极大地拓展了自动化处理复杂场景的边界。在实际应用中,为Agent集成实时网络信息获取能力,例如通过网页抓取工具访问动态数据源,成为解决模型知识陈旧问题的关键。同时,在开发工具层面,将大模型API(如Google的Gemini)集成至IDE(如Xcode),能够为开发者提供智能代码生成、错误分析与文档查

weixin_30580341的博客 383

Unity网络通信实战:基于Best HTTP/3实现稳定文件上传与动态数据流传输

在Unity应用开发中,网络通信是连接客户端与服务器的核心技术,其稳定性和性能直接影响用户体验。HTTP协议作为应用层通信的基础,经历了从HTTP/1.1到HTTP/2再到HTTP/3的演进,核心目标在于提升传输效率、降低延迟并增强连接可靠性。HTTP/3基于QUIC协议,在传输层整合了TLS加密,实现了更快的连接建立和更强的抗丢包能力,尤其适合移动网络和高延迟环境。对于需要**文件上传**和**动态数据流**传输的Unity项目(如游戏截图上传、实时语音聊天、运行时日志回传),传统的UnityWebReq

weixin_34226182的博客 433

Python打造个人生活自动化系统:懒人居Coding for fun实践指南

生活自动化是将重复性日常任务通过程序自动执行的技术实践,其核心原理在于以本地化、低侵入、高可控的方式构建私有工作流。相比通用SaaS或RPA工具,基于Python的轻量脚本能精准适配非标场景(如微信截图OCR、物业缴费PDF解析),兼顾隐私安全与执行确定性。技术价值体现在时间赎回率提升、生活颗粒度重定义及零成本长期复用;典型应用场景包括账单归档、周报生成、家庭设备联动等。本文聚焦‘Coding for fun’理念下的可落地方案,结合PaddleOCR、SQLite、系统定时器等关键技术,提供从环境搭建、脚

baochuanying9531的博客 462

Python与JavaScript跨平台剪切板与URL操作实战指南

剪切板操作和URL处理是软件开发中实现数据流转与应用间通信的基础技术。剪切板本质上是操作系统提供的进程间通信机制,允许不同应用共享文本、图像等数据,但其API在不同平台(如Windows、macOS、Linux)和浏览器环境中存在显著差异。URL(统一资源定位符)则通过自定义Scheme或通用链接,实现了应用间的深层链接与唤醒功能。掌握这些技术的核心价值在于能够构建高效的工具链和流畅的用户体验,例如开发自动化脚本、实现“一键复制”功能或处理应用跳转逻辑。在实际应用中,开发者常面临跨平台兼容性、浏览器安全策略

weixin_30851867的博客 355

10分钟本地部署AI Agent:OpenClaw+Hermes零GPU私有化实践

AI Agent(智能体)作为自动化任务编排与人机协同的核心范式,正从云端推理向轻量本地化演进。其本质是将浏览器操作、API调用、文件处理等原子能力封装为可调度的Skill(技能),通过无头运行时(如OpenClaw)完成决策链路,再由桌面前端(如Hermes)提供低延迟交互。这种‘小脑+反射弧’架构不依赖大模型本地推理,显著降低硬件门槛与数据外泄风险,适用于隐私敏感场景、中小团队MVP验证及边缘设备部署。本文聚焦本地化落地的关键路径:零CUDA依赖的Python原生部署、Skill能力契约设计规范、跨平台

congji3817的博客 689

OpenClaw:专为Mac设计的开源AI Agent数字员工操作系统

AI Agent是让大模型具备自主感知、决策与执行能力的智能体系统,其核心在于解耦架构与分层记忆机制。在本地化、低延迟、高隐私的工程实践中,macOS因沙盒限制、权限模型和芯片异构性成为部署难点。OpenClaw直面这一挑战,以三层解耦(感知/决策/执行)和四层记忆(瞬时缓存/会话记忆/技能知识库/经验图谱)构建可落地的数字员工范式,并深度适配M系列芯片与原生API。它不依赖云服务或GPU服务器,支持微信、钉钉、Excel、PDF、日历等20+办公场景闭环自动化,真正实现‘AI坐进工位’的技术价值。本文详解

aibiba0894的博客 354

漫画阅读工具技术解析:从爬虫到Flutter的完整实现方案

在移动应用开发领域,内容聚合类App的实现通常涉及网络爬虫、API设计、客户端架构与缓存优化等核心技术。其基本原理是通过自动化脚本从公开网络源抓取结构化数据,经由后端服务提供RESTful API,再由移动客户端请求并渲染展示。这一技术方案的核心价值在于解决了信息高效聚合与分发的需求,广泛应用于资讯阅读、资源整合等场景。以漫画阅读工具为例,开发者常采用Flutter等跨平台框架实现双端覆盖,结合Dio网络库与cached_network_image等组件处理资源加载,通过本地数据库实现用户状态持久化。这类工

weixin_30706691的博客 255

iPhone原生部署Gemma 2 27B:离线AI工程实践全解析

大语言模型(LLM)在端侧运行正从概念走向生产力工具,其核心在于模型轻量化、硬件协同优化与系统级隐私保障。基于Apple Core ML与Metal的原生部署路径,可突破iOS沙盒限制,实现不联网、不上传、低延迟的本地推理。相比Llama.cpp等跨平台方案,Core ML提供内存零拷贝、NPU/GPU异构调度及App Store合规性优势,尤其适配A17 Pro统一内存架构与Metal Performance Shaders深度优化能力。该技术已支撑真实场景下的代码补全、文档摘要与多模态理解(如相册图纸解

weixin_34321753的博客 489

Playwright连接现有浏览器会话:MCP协议实战与高级自动化技巧

浏览器自动化是现代软件测试和网页数据采集的核心技术,它通过程序控制浏览器行为,模拟用户操作。其原理基于浏览器开发者工具协议(如CDP),实现客户端与浏览器进程间的通信。这项技术的价值在于提升测试效率、确保应用质量,并广泛应用于UI自动化测试、爬虫开发和流程自动化等场景。本文聚焦于Playwright框架中一项高级特性——连接现有浏览器会话,通过MCP(Message Channel Protocol)协议实现状态复用,特别适用于处理复杂登录态和调试场景,能有效绕过繁琐的初始化步骤,直接操作已登录的页面状态。

weixin_30448603的博客 297
上一篇: iOS那些锁
下一篇: 深入理解Linux中内存管理
boyXiong
博客等级 码龄11年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值