python设置是否超时,http协议get,post请求(python小白学习笔记三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36411874/article/details/83656938

 

(一)设置是否超时

循环,当服务器性能不太好的时候,异常更频繁的报,

网页长时间没相应,那么网页超时,当需要自己设置超时的时间值时候,有些网站希望10s作为是否超时标准,timeout值就是10 # file=urllib.request.urlopen("http://yum.iqianyue.com",timeout=1)#设置1s作为判断标准,会出现异常 #如果设置大一些30,则没有产生异常。

import urllib.request
for i in range(1,100):
    try:
        """网页长时间没相应,那么网页超时,当需要自己设置超时的时间值时候,有些网站希望10s作为是否超时标准,timeout值就是10
       # file=urllib.request.urlopen("http://yum.iqianyue.com",timeout=1)#设置1s作为判断标准,会出现异常
        #如果设置大一些30,则没有产生异常。"""
        file = urllib.request.urlopen("http://yum.iqianyue.com", timeout=30)  # 设置1s作为判断标准,会出现异常
        data=file.read()
        print(data)
        print(len(data))
    except Exception as e:
        print("异常"+str(e))

(二)get请求

get请求,需要注意事项
(1)满足url格式,get字段与内容合适并且URL满足get请求,同时处理参数编码
(2)对应的URL为参数,构建Request对象
(3)通过urlopen()打开构建的request对象
(4)后续处理操作,读取网页内容,写入文件等
#http协议请求,客户端与服务端进行消息传递
#get请求
"""
在浏览器输入关键字,回车,url变化。
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu
&wd=hello&rsv_pq=f218eac10000df63&rsv_t=3615gHwrY%2FUiWRMS%2Fh3pT5KyEK755vjJ%2F2wKMOK%2BPwDS6uh0nWg%2BI32RUpU
&rqlang=cn&rsv_enter=1&rsv_sug3=7&rsv_sug1=8&rsv_sug7=101
得出,wd=hello,关键词是wd
可以简化为:https://www.baidu.com/s?wd=hello
"""

"""
get请求,需要注意事项
(1)满足url格式,get字段与内容合适并且URL满足get请求,同时处理参数编码
(2)对应的URL为参数,构建Request对象
(3)通过urlopen()打开构建的request对象
(4)后续处理操作,读取网页内容,写入文件等
"""
import urllib.request
keyworld="渴望飞的鱼"
key=urllib.request.quote(keyworld)
url="https://www.baidu.com/s?wd="+key
print(url)
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
fhandle=open('D:/爬虫/抓取文件/2018110205.html','wb')
fhandle.write(data)
fhandle.close()

(三)post请求

post请求,注册登陆操作时候,遇到post请求。测试网址:http://www.iqianyue.com/mypost
(1)设置好URL地址,分析页面。(右键——查看页面源码——查看表单部分)
(2)构建表单数据,使用urllib.parse.urlencode对数据进行编码处理
(3)创建Request对象,参数包括URL地址要传数据
(4)使用add_header()添加头信息,模拟浏览器进行爬取
(5)使用urllib.request.urlopen()打开相应的Request对象,完成信息传递
(6)后续处理
"""
post请求,注册登陆操作时候,遇到post请求。测试网址:http://www.iqianyue.com/mypost
(1)设置好URL地址,分析页面。(右键——查看页面源码——查看表单部分)
(2)构建表单数据,使用urllib.parse.urlencode对数据进行编码处理
(3)创建Request对象,参数包括URL地址要传数据
(4)使用add_header()添加头信息,模拟浏览器进行爬取
(5)使用urllib.request.urlopen()打开相应的Request对象,完成信息传递
(6)后续处理
"""
import urllib.request
import urllib
import parse

url="http://www.iqianyue.com/mypost"
#需要对数据进行编码处理
postdata = {
    "name":"你是猪",
    "pass":"嘻嘻嘻"
    }
postdata = urllib.parse.urlencode(postdata).encode('utf-8')

req=urllib.request.Request(url,postdata)
req.add_header("User-Agent"," Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36")
data=urllib.request.urlopen(req).read()
fhandle=open('D:/爬虫/抓取文件/2018110208.html',"wb")
fhandle.write(data)
fhandle.close()


抓取网页代码:

<html>
<head>
<title>Post Test Page</title>
</head>

<body>
<form action="" method="post">
name:<input name="name" type="text" /><br>
passwd:<input name="pass" type="text" /><br>
<input name="" type="submit" value="submit" />
<br />
you input name is:你是猪<br>you input passwd is:嘻嘻嘻</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_36411874/article/details/83656938