请问在python使用urlopen获取网页时如何判断完整读取了网页?

chenxi_aji 2011-09-08 09:58:18
请问在python使用urlopen获取网页时如何判断完整读取了网页?

某些时候因为网络关系虽然拿到了内容但是并不完整,请问该如何判断?

另外使用urlopen需要使用别的什么函数释放关闭开启的socket吗?我看例子里都没有

谢谢。
...全文
467 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenxi_aji 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wyjq395 的回复:]

没必要这样去判定吧,一般没有报错都是正常的。
你得到的state是200就行了
[/Quote]
请问怎么用python获取state?
如果网页没有获取完整state的值就不是200了吗?
iambic 2011-09-10
  • 打赏
  • 举报
回复
f怎么会是字符串?你搞错了吧。
>>> import urllib
>>> f = urllib.urlopen('http://topic.csdn.net')
>>> f
<addinfourl at 13332192 whose fp = <socket._fileobject object at 0x00D5F9B0>>
>>> f.headers['Content-Length']
'169'
chenxi_aji 2011-09-10
  • 打赏
  • 举报
回复
up一下。继续求解。
chenxi_aji 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iambic 的回复:]

试下f.headers.['Content-Length']
[/Quote]
f是字符串,没有headers这个成员
wyjq395 2011-09-09
  • 打赏
  • 举报
回复
没必要这样去判定吧,一般没有报错都是正常的。
你得到的state是200就行了
iambic 2011-09-09
  • 打赏
  • 举报
回复
试下f.headers.['Content-Length']
chenxi_aji 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yby4769250 的回复:]

不能用content length和你read返回的len比较?
[/Quote]
请问怎么获取content length?我使用
f = urllib.urlopen(TheUrl)
print f.info()
打印出来的info里没有content length这一栏。

还有用了这条语句connection就关闭了。奇怪。
iambic 2011-09-08
  • 打赏
  • 举报
回复
content-length是一个思路。不过不太确定有gzip的时候管不管用。而且可能有部分网页没有设这个header。
但是我觉得更复杂的方案也不值得考虑。

urlopen的返回结果可以close。不过不手动关也没什么大问题。
yby4769250 2011-09-08
  • 打赏
  • 举报
回复
不能用content length和你read返回的len比较?

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧