全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1600|回复: 31

全球python开发论坛

[复制链接]
发表于 2022-5-7 21:30:41 | 显示全部楼层 |阅读模式
本帖最后由 深海空间 于 2022-5-7 22:10 编辑

最近有个需求,就是按照搜索关键字然后爬取国内某个网站的图片并发送到TG bot,现在遇到了一个问题,就是这个站点用的图床是一个叫做imgsto的图床,这个图床有一个恶心的地方就是点进去之后他会叫你点击一个叫做 Continue to image 的按钮(这个按钮要点好几次才可以点到),这个简单,我就撸了几行python代码获取真实链接



然后把这个链接发给TG bot的时候死活得到400的结果,最后经过测试发现,这个返回来的链接好像时关联访问IP的,当我使用其他IP来访问这个我得到的real_url时会得到一个 Wrong IP 的结果


现在我想问的是,要怎么按照原来的设想,我输入关键字之后脚本自动把这张图发送到bot呢?
我目前自己想的一个方法就是先把这个图片解析完之后下载到本地,然后再本地上传到TG服务器,但是这样每一张图都涉及到一次IO操作
有没有什么办法避免呢?比如存到内存之类的(可以吗?)这样就不用一直往复写入硬盘了
或者说各位MJJ有没有其他更优雅的方式?

得到六楼提醒,直接使用request的content对象解决了多次操作IO问题
发表于 2022-5-7 22:25:03 | 显示全部楼层
requests的content是二进制流,本来就是存在内存中的,可以直接使用,但是这样有很大弊端,有可能内存溢出,最优解还是将content写入文件,形成类似文件池,单独进程去处理文件池发给bot
表妹 该用户已被删除
发表于 2022-5-7 21:32:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2022-5-7 21:34:11 | 显示全部楼层
和你想法一样,下载再上传,其实效率上也没有太大变化,毕竟tg的api也有限制的
发表于 2022-5-7 21:36:57 | 显示全部楼层
只能下载在上传然后删除文件
发表于 2022-5-7 21:38:13 | 显示全部楼层
带上本地cookie试试,太久没写爬虫了
已经三年没写过py了
都寄吧忘了
发表于 2022-5-7 21:42:01 | 显示全部楼层
IO操作影响不大,不过你也可以试试直接用requests.get来请求这个图片的地址,然后返回值里面好像有个content成员可以直接使用
发表于 2022-5-7 21:50:27 | 显示全部楼层
种子的预览图片???
发表于 2022-5-7 21:55:32 | 显示全部楼层
Redis,直接在内存处理了啊
 楼主| 发表于 2022-5-7 21:56:23 | 显示全部楼层
hihandbag 发表于 2022-5-7 21:50
种子的预览图片???

emmm, 咱现在讨论的是技术性问题
 楼主| 发表于 2022-5-7 22:08:35 | 显示全部楼层
Floppy 发表于 2022-5-7 21:42
IO操作影响不大,不过你也可以试试直接用requests.get来请求这个图片的地址,然后返回值里面好像有个conten ...

卧槽,还真可以,本来我的想法是把这个requests的content写入一个本地文件当中介,然后再读出来给TG的api,没想到可以直接把这个content拿给tg使用,多谢多谢,这样就可以省下这些IO操作了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-25 06:08 , Processed in 0.069118 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表