如何关闭对流式广播流url的请求?

2024-09-30 16:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在抓取一些页面的请求,并遇到了一个无线流的网址。我基本上只想跳过它或进行某种超时,但请求没有结束:

u = 'http://streaming.radionomy.com/Cheche-International-Radio'
print 'started...', u
r = requests.get(u, timeout=1, stream=False)

我以为设置stream=False就可以了,不是吗?我也尝试过设置头标题['Connection']='close',但这也不起作用。在这两种情况下,请求都不会关闭。在

谢谢!在


Tags: comfalsehttpstream页面requestsradio无线
1条回答
网友
1楼 · 发布于 2024-09-30 16:36:07

实际上,代码的行为与预期的一样,但是参数可能并不意味着您期望的那样。^{启动服务器不需要很长的时间来响应服务器。。。但它发出了无限的回应。stream,另一方面,当设置为true(这是默认设置)时,会等到整个内容都下载完毕;同样,内容永远不会结束,因此调用将永远不会返回(并且可能会占用内存)。在

我认为您需要的是使用stream=False发出请求,查看响应HTTP头,如果内容不是您要查找的内容,则丢弃该请求。例如,您可以查看Content-Type;如果您只对text/html响应感兴趣,则可以使用以下代码:

u = 'http://streaming.radionomy.com/Cheche-International-Radio'
print 'started...', u
r = requests.get(u, stream=True)
content_type = r.headers['Content-Type']
if content_type.startswith('text/html'):
    content = r.content
    # process the content
else:
    print 'discarded ', u

当然,您可以选择使用其他条件筛选请求。例如,标题是:

^{pr2}$

其中有些是标准的,有些是针对Icecast的,请选择更适合您的。在

相关问题 更多 >