python - 通过限制字节读取网站的部分内容

标签 python python-3.x urllib pycurl urllib3

我正在尝试阅读几个网站,获取我需要的信息,然后继续前进。尽管 python 代码卡在某些网站上。我注意到在真实的浏览器中,网站有时无法完全加载,也许它正在等待一些广告加载......?

我需要的信息在网站的前 50kb 内。如果我使用超时,则在我尝试过的所有模块(urllib、urlib3 和 pycurl)中,来自连接的整个响应都会丢失。另外,在 pycurl 中,设置选项 RANGE 似乎对 url 没有任何作用。

有谁知道如何保存调用超时时已收到的内容。或者,有人知道如何有效地将内容限制为一定数量的字节吗?

最佳答案

我发现pycurl仍然会写入缓冲区,直到超时。如果发生超时,可以捕获错误并检索缓冲区。这是我使用的代码。

    try:
        buffer = BytesIO()
        http_curl = pycurl.Curl()
        http_curl.setopt(pycurl.URL, url)
        http_curl.setopt(http_curl.WRITEDATA, buffer)
        http_curl.setopt(http_curl.FOLLOWLOCATION, True)
        http_curl.setopt(http_curl.TIMEOUT_MS, 1000)
        http_curl.perform()
        http_curl.close()
    except pycurl.error:
        response = buffer.getvalue()
        response = response.decode('utf-8')
        print(response)
        pass

页面已部分下载,然后打印。 感谢 t.m.adam 激发了解决方法。

关于python - 通过限制字节读取网站的部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43924800/

相关文章:

python - 如何从 FTP 服务器读取 gzip 文件?

python - 如何从表中检索行并使用 urllib 获取/打开每个链接?

python - 强制 python mechanize/urllib2 只使用 A 请求?

python - 循环 View 中的模型对象字段

python - 小部件在弹出窗口上没有响应

python - 以 t 开头但以 e 以外的其他词结尾的单词

python - 在数据类中创建类变量的正确方法

string - Unicode 字符串到 Unicode 字符,Python 3

python - 在日期中添加月、日、年

python - 添加要设置的列表