#!/usr/bin/env racket
#lang racket/base
(require net/url racket/port)
(require (planet neil/html-parsing:3:0))
(define p (get-pure-port (string->url "https://www.rosettacode.org/wiki/Web_scraping")))
(define my-html (port->string p))
(close-input-port p)是否有另一种方法可以重写上述代码,这样就不需要显式地指示(close-input-port p)?我想到了类似的call-with-input-file,一旦读取文件的工作完成(类似于Python中的上下文管理器),就会关闭端口。
发布于 2022-07-03 09:44:03
在这种情况下,您可以使用call/input-url
(define my-html
(call/input-url (string->url "https://www.rosettacode.org/wiki/Web_scraping")
get-pure-port port->string))它使用给定的连接函数从URL打开端口,用该端口调用处理程序函数,并在返回处理程序的返回值之前关闭端口。
开放端口的许多Scheme和Racket特定的函数类别都具有等价性,就像我在回答另一个问题时使用的call-with-input-file一样。
https://stackoverflow.com/questions/72845359
复制相似问题