我正在尝试阅读几个网站,获取我需要的信息,然后继续前进。尽管 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/