gpt4 book ai didi

python - 在 python 中,如何让 urllib 将字符串中的多行识别为单独的 URL?

转载 作者:行者123 更新时间:2023-12-01 08:35:01 25 4
gpt4 key购买 nike

我对代码很陌生,所以请原谅我在解释中犯的任何错误!我正在尝试在 python 上编写代码,使用 Praw 访问/r/pics subreddit,抓取源 url 并使用 urllib、cv2 和 numpy 显示它们。

目前我的代码如下所示:

import praw
import numpy as np
import urllib
import cv2

# urllib set-up
def reddit_scrape(url):
resp = urllib.request.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
return image

# reddit set-up
reddit = praw.Reddit(client_id = 'id',
client_secret = 'secret',
user_agent = 'agent')

subreddit = reddit.subreddit('pics')
hot_pics = subreddit.hot(limit=10)

for submission in hot_pics:
if not submission.stickied:
print(submission.url)

# print images
urls = [submission.url]
for url in urls:
image = reddit_scrape(url)
cv2.imshow('image', image)
cv2.waitKey(0)

当我运行这个程序时,我的问题是,虽然 print(submission.url) 行打印了前 10 个帖子的完整列表,但实际上只打开并显示列表中的最后一个 url。

我的猜测是错误出在我的定义中

urls = [submission.url]

但我无法将“url”定义为静态 URL 列表,因为热门列表会随着时间的推移而变化。

我做错了什么?有没有正确的方法来做到这一点?任何帮助将不胜感激。

最佳答案

submissionfor 循环末尾最后一次提交的内容。不是在循环外构造 urls,因此当您说 urls = [submission.url] 时,您只会获得最后一个 url。相反,您应该创建一个列表并附加它们:

urls = []
for submission in hot_pics:
if not submission.stickied:
urls.append(submission.url)

或者更Pythonic:

urls = [submission.url for submission in hot_pics if not submission.stickied]

然后 for url in urls 将循环遍历所有附加的 url。

关于python - 在 python 中,如何让 urllib 将字符串中的多行识别为单独的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com