鱼C论坛

 找回密码
 立即注册
查看: 1675|回复: 2

[已解决]Python 爬虫,request模块read()的问题

[复制链接]
发表于 2020-3-11 09:59:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
response = urllib.request.urlopen("https://www.baidu.com/")
>>>
>>> html = response.read()
>>> html.decode("utf-8")
'<html>\r\n<head>\r\n\t<script>\r\n\t\tlocation.replace(location.href.replace("https://","http://"));\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>\r\n</body>\r\n</html>'

感觉现在网页的content好像不是bytes,不需要decode,这个先不管,问题是下面

但是如果:没事response.read()了一下就变成这样了
>>> response = urllib.request.urlopen("https://www.baidu.com/")
>>> response.read()
b'<html>\r\n<head>\r\n\t<script>\r\n\t\tlocation.replace(location.href.replace("https://","http://"));\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>\r\n</body>\r\n</html>'
>>> html = response.read()
>>> html.decode("utf-8")
''
>>>
这是为什么,就像是文件的指针,response是由tell,和seek但是无法使用
大佬帮忙问你下这是什么原因,如果改怎么改?
最佳答案
2020-3-11 11:07:59
urllib.request.urlopen()返回<http.client.HTTPResponse>对象

查阅python 3.7.3 doc:
-> HTTPResponse.read([amt])
-> Reads and returns the response body, or up to the next amt bytes.
-> example: res.read(500) 从开始读取到第500个bytes

response.read() 没有参数,默认读取全部
对同一对象读取,从上一次读取地方重新读取

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 11:07:59 | 显示全部楼层    本楼为最佳答案   
urllib.request.urlopen()返回<http.client.HTTPResponse>对象

查阅python 3.7.3 doc:
-> HTTPResponse.read([amt])
-> Reads and returns the response body, or up to the next amt bytes.
-> example: res.read(500) 从开始读取到第500个bytes

response.read() 没有参数,默认读取全部
对同一对象读取,从上一次读取地方重新读取

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 11:56:16 | 显示全部楼层
read() 只能读取一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 16:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表