Python 如何检查Reddit帖子是否只包含一个图像而不包含其他内容?

Python 如何检查Reddit帖子是否只包含一个图像而不包含其他内容?,python,regex,reddit,praw,Python,Regex,Reddit,Praw,背景:我目前正在使用Python 3.7中的库制作一个Reddit机器人。我的机器人需要做的一件事是检查一些subreddit上的最新帖子,看看它们是否只包含一个图像而没有其他内容 考虑到Reddit上有不同类型的帖子(上传图片的帖子和包含图片的普通文本帖子),我首先决定区分这两种可能性。据我所知,praw没有提供任何功能来获取Reddit帖子的类型 要处理仅为图像而非其他内容的帖子,我只需使用以下命令检查返回的praw的URL: 如果URL匹配,我只下载图像。这很有效。另一方面,对于恰好只包含

背景:我目前正在使用Python 3.7中的库制作一个Reddit机器人。我的机器人需要做的一件事是检查一些subreddit上的最新帖子,看看它们是否只包含一个图像而没有其他内容

考虑到Reddit上有不同类型的帖子(上传图片的帖子和包含图片的普通文本帖子),我首先决定区分这两种可能性。据我所知,praw没有提供任何功能来获取Reddit帖子的类型

要处理仅为图像而非其他内容的帖子,我只需使用以下命令检查返回的praw的URL:

如果URL匹配,我只下载图像。这很有效。另一方面,对于恰好只包含图像的文本帖子,我检查了
selftext
属性,对于只包含图像而不包含其他内容的帖子,这与此类似:

​\n\nhttps://i.redd.it/xxxxxxxxxx.png
使用上面的正则表达式(去掉开头和结尾标记),我可以提取URL,并通过
re.findall
确保只有一个URL在那里。但是,我如何确保帖子中完全没有文本(除了空格和奇怪的转义序列
​;
,我不理解它的用途)

据我所知,praw没有提供任何功能来获取Reddit帖子的类型

PRAW从Reddit的响应动态加载属性。要了解任何给定对象上的可用内容,请参阅PRAW文档部分。对于
提交
,建议使用以下代码段:

这将打印出可用属性的
dict
。使用此选项,您将发现属性
。is_self
。is_reddit\u media\u domain
。第一个将告诉你(作为布尔值)一篇文章是否是一篇自我发表的文章,第二个将告诉你(作为布尔值)一篇文章是否是“reddit media”,其中也包括视频。不要将URL与正则表达式匹配,只需检查
.is\u reddit\u media\u domain
是否为真,以及
.domain==“i.redd.it”

例如:

In [5]: reddit.submission('anr0l2').is_self
Out[5]: True

In [6]: reddit.submission('anspgf').domain == 'i.redd.it'
Out[6]: True

In [7]: reddit.submission('antg2x').domain == 'i.redd.it'
Out[7]: False

如何确保图像中完全没有文本


“图像中没有文字”是什么意思?图像包含文本对您来说意味着什么?

不在图像中,这是打字错误。我的意思是在帖子里。我将对问题进行编辑以澄清。
import pprint

# assume you have a Reddit instance bound to variable `reddit`
submission = reddit.submission(id='39zje0')
print(submission.title) # to make it non-lazy
pprint.pprint(vars(submission))
In [5]: reddit.submission('anr0l2').is_self
Out[5]: True

In [6]: reddit.submission('anspgf').domain == 'i.redd.it'
Out[6]: True

In [7]: reddit.submission('antg2x').domain == 'i.redd.it'
Out[7]: False