用Python解析直播网站的行数据

1 投票
3 回答
937 浏览
提问于 2025-04-16 16:44

我想从一个不断变化的网站上读取信息。

比如说,我想获取一个在线电台正在播放的艺术家的名字。我可以抓取到当前艺术家的名字,但当歌曲换了的时候,网页的HTML会自动更新,而我已经通过:

f = urllib.urlopen("SITE")

打开了文件。所以我看不到新歌曲的更新艺术家名字。

我可以在一个无限循环中不断关闭和打开这个网址,以获取更新后的HTML代码吗?还是说有更好的方法?谢谢!

3 个回答

0

是的,这种方法是对的。要在网页上获取更新,你每次都需要发送一个新的请求。实时的AJAX网站就是这样在后台操作的。

有些网站还提供额外的接口,包括长轮询。你可以查看网站的文档,或者问问他们的开发者是否有相关的信息。

1

你需要定期重新下载网站的内容,但不要一直这样做,因为那样会对服务器造成很大压力。

这是因为HTTP本身并不是一个流式协议。当你连接到服务器后,它会期待你发送一个HTTP请求,然后它会返回一个HTTP响应,里面包含网页内容。如果你最开始的请求是保持连接的(在HTTP/1.1中是默认的),那么你可以再次发送相同的请求,获取最新的网页。

我建议你根据自己的需求,每隔n秒获取一次页面,拿到你需要的数据。如果这个网站提供了API,你可以利用这个接口来获取数据。此外,如果是你自己的网站,你可能可以实现一种类似“喜鹊式”的Ajax,通过HTTP获取真正的流式数据。

另外,如果是别人的网页,可能这个网站使用了JavaScript的Ajax来保持内容更新;这意味着还有其他请求在进行更新,你可能需要仔细分析这个网站,找出你需要发送哪些请求才能获取到数据。

1

如果你使用urllib2这个库,在发送请求的时候可以查看到一些头信息。如果服务器返回了一个"304 Not Modified"的状态,这就意味着内容没有发生变化。

撰写回答