嘟嘟社区

全球python开发论坛


本帖最后由 深海空间 于 2022-5-7 22:10 编辑

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

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

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

得到六楼提醒,直接使用request的content对象解决了多次操作IO问题

requests的content是二进制流,本来就是存在内存中的,可以直接使用,但是这样有很大弊端,有可能内存溢出,最优解还是将content写入文件,形成类似文件池,单独进程去处理文件池发给bot
图片漏点了
和你想法一样,下载再上传,其实效率上也没有太大变化,毕竟tg的api也有限制的
只能下载在上传然后删除文件
带上本地cookie试试,太久没写爬虫了
已经三年没写过py了
都寄吧忘了
IO操作影响不大,不过你也可以试试直接用requests.get来请求这个图片的地址,然后返回值里面好像有个content成员可以直接使用
种子的预览图片???
Redis,直接在内存处理了啊

hihandbag 发表于 2022-5-7 21:50
种子的预览图片???

emmm, 咱现在讨论的是技术性问题

Floppy 发表于 2022-5-7 21:42
IO操作影响不大,不过你也可以试试直接用requests.get来请求这个图片的地址,然后返回值里面好像有个conten …

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